четверг, 5 декабря 2013 г.
weird shit isnt it?
ll -la /proc/7952/fd/ | grep 12 | cut -d '[' -f 2 | cut -d ']' -f1 | while read line; do netstat -anpF | grep $line; done
вторник, 27 августа 2013 г.
uncomment.sh
Время от времени нужно избавиться от комментариев в конфигах, чтобы сравнить, например, чем он отличается от стандартного, помимо комментов. Да и суть ведь не в них. В общем скрипт, вызывается так:
uncomment /etc/raddb/radius.conf
#!/bin/bash
egrep -v "^\s*\t*\s*$" "$1" | egrep -v "^\s*\t*\s*#.*$" > "$1".uncommented
mv "$1.uncommented" "$1"
Удаляет пустые строки и комментарии.
воскресенье, 25 августа 2013 г.
Работа с частями строки в sed
echo qwerty | sed -e 's/\(qwe\)\(rty\)/\2\1/g'
\(qwe\) - это \1
\(rty\) - это \2
собственно мы их переставили местами.
\(qwe\) - это \1
\(rty\) - это \2
собственно мы их переставили местами.
четверг, 20 июня 2013 г.
Поиск того, что отъёло больше всего места на диске
Тупой написанный на коленке скрипт, подходящий для системы на одном разделе.
#!/bin/bash
get_first_2() {
du -s * 2>/dev/null | sort -nr | head -2 | awk '{print $2}'
}
cd /
for i in $(seq 0 3); do
for j in $(seq 0 $i); do
echo -n " "
done
dirs="$(get_first_2)"
echo $dirs
dir="$(echo "$dirs" | head -1)"
cd $dir
done
воскресенье, 16 июня 2013 г.
git add <только изменённые файлы>
Извращение, но всё же.
git status | grep modif | awk '{print $3}' | xargs echo git add
git status | grep modif | awk '{print $3}' | xargs echo git add
пятница, 24 мая 2013 г.
понедельник, 13 мая 2013 г.
Список выходных года на баше
К сожалению нашёлся небольшой косяк - пропускается часть воскресений и суббот в неполных неделях.
Пример для будущего ковыряния:
LANG=C cal 1 2013 | egrep -v "([a-z]^C$)" | while read -a arr; do len=${#arr[@]}; let len--; echo ${arr[$len]}; done
и сам скрипт
#!/bin/bash
Пример для будущего ковыряния:
LANG=C cal 1 2013 | egrep -v "([a-z]^C$)" | while read -a arr; do len=${#arr[@]}; let len--; echo ${arr[$len]}; done
и сам скрипт
#!/bin/bash
for i in $(seq 1 12); do
LANG=C cal $i 2013 | grep -v "[a-z]" | while read t t t t t t day; do
[ -n "$day" ] && date +"%Y-%m-%d Воскресение" --date="2013-$i-$day"
done
LANG=C cal $i 2013 | grep -v "[a-z]" | while read t t t t t day t; do
[ -n "$day" ] && date +"%Y-%m-%d Суббота" --date="2013-$i-$day"
done
done
if [ -f add.txt ]; then
while read date name; do
echo "$date" "$name"
done < weeks.txt
fi
Результат под катом...
четверг, 11 апреля 2013 г.
Преобразование даты git log в unixtime
while read tmp date; do
s="$(echo "$date" | awk '{print $1", "$3" "$2" "$5" "$4" "$6}')"
date +%s --date="$date"
done <<< "$(git log | grep "^Date")"
Почему? Because of fuck logic and encoding.
s="$(echo "$date" | awk '{print $1", "$3" "$2" "$5" "$4" "$6}')"
date +%s --date="$date"
done <<< "$(git log | grep "^Date")"
Почему? Because of fuck logic and encoding.
вторник, 19 марта 2013 г.
Получаем суммарный ChangeLog по нескольким git репозиториям
#!/bin/bash
for i in ~/GIT/gitrepo1 ~/GIT/bash_scripts*; do
[ -d "${i}/.git" ] && ( cd $i; git log --date=short --pretty="%cd %h %s" )
done 2>/dev/null | sort -r | uniq
%cd - commiter date
%h - sha1 хэш коммита
%s - описание коммита
--date=short даёт формат для дат типа YYYYMMDD, что удобно для сортировки
for i in ~/GIT/gitrepo1 ~/GIT/bash_scripts*; do
[ -d "${i}/.git" ] && ( cd $i; git log --date=short --pretty="%cd %h %s" )
done 2>/dev/null | sort -r | uniq
%cd - commiter date
%h - sha1 хэш коммита
%s - описание коммита
--date=short даёт формат для дат типа YYYYMMDD, что удобно для сортировки
понедельник, 25 февраля 2013 г.
Куски последних логов
#!/bin/bash
cd /var/log/
for f in *; do
[ -f "$f" ] || continue
[[ "$f" = *[0-9]* ]] && continue
echo "$f"
done | while read log; do
tail -10000 "$log" > /root/debug/$log.tail
done
понедельник, 11 февраля 2013 г.
Конвертим маски из короткого в длинный формат
#!/bin/bash
masks=( 0.0.0.0 128.0.0.0 192.0.0.0 224.0.0.0 240.0.0.0 248.0.0.0 252.0.0.0 254.0.0.0 255.0.0.0 255.128.0.0 255.192.0.0 255.224.0.0 255.240.0.0 255.248.0.0 255.252.0.0 255.254.0.0 255.255.0.0 255.255.128.0 255.255.192.0 255.255.224.0 255.255.240.0 255.255.248.0 255.255.252.0 255.255.254.0 255.255.255.0 255.255.255.128 255.255.255.192 255.255.255.224 255.255.255.240 255.255.255.248 255.255.255.252 255.255.255.254 255.255.255.255 )
for i in `seq 0 32`; do
echo $i = ${masks[$i]}
done
среда, 6 февраля 2013 г.
Дебаг скриптов работающих с сетью
Функция, которая очень помогает при отладке чего-то связанного с скриптами, работающими с сетью на удалённой машине :)
ip() {
echo ip $@
}
среда, 30 января 2013 г.
Поддерживаемые Intel видеокарты для нетбуков и планшетов
- Графические решения Intel® HD
- Графический контроллер Intel® 82815
- Графический контроллер Intel® 82946GZ
- Графическое решение Intel® Graphics Media Accelerator 3150 (Intel® GMA 3150)
- Контроллер графической подсистемы Intel® 82845G
- Контроллер-концентратор графики и памяти Intel® 82810 (GMCH)
- Контроллер-концентратор графики и памяти Intel® 82830M (GMCH)
- Контроллер-концентратор графики и памяти Intel® 82G965 (GMCH)
- Контроллер-концентратор графической и оперативной памяти Intel® 82Q963 (GMCH)
- Контроллер-концентратор графической и оперативной памяти Intel® 82Q965 (GMCH)
- Контроллер-концентратор графической подсистемы и памяти Intel® 82865G (GMCH)
- Набор микросхем Intel® 82945G Express
- Набор микросхем Intel® B43 Express
- Набор микросхем Intel® G31 Express
- Набор микросхем Intel® G33 Express
- Набор микросхем Intel® G35 Express
- Набор микросхем Intel® G41 Express
- Набор микросхем Intel® G43 Express
- Набор микросхем Intel® G45 Express
- Набор микросхем Intel® Q33 Express
- Набор микросхем Intel® Q35 Express
- Набор микросхем Intel® Q43 Express
- Набор микросхем Intel® Q45 Express
- Процессоры Intel® Core™ второго поколения с графическими решениями Intel® HD Graphics 3000/2000
- Семейство графических контроллеров Intel® 82852/82855
- Семейство наборов микросхем Intel® 82915G/82910GL Express
- Семейство наборов микросхем Intel® 915GM/GMS, 910GML Express для мобильных ПК
- Семейство наборов микросхем Intel® 945GM Express для мобильных ПК
- Семейство наборов микросхем Intel® 965 Express для мобильных ПК
понедельник, 14 января 2013 г.
Дебаг скриптов на bash
echo $FUNCTION $@
Вставьте в начало функции, если нужно - перенаправьте вывод в лог-файл. Жизнь станет значительно легче :)
Последние неофициальные новости Carbonsoft
За первую половину первого месяца нового года у нашей компании произошло много нового.
- Мы завершили ребрендинг и больше почти никак не связаны с Ideco кроме как дружбой с бывшими коллегами и, иногда, обменом технологиями. Теперь мы уже официально зовёмся Carbon Soft, а не отдел АСР компании Ideco.
- Мы переехали на новый сайт, теперь больше нет никаких проблем с публикацией новостей, хехех, конечно же есть, они должны выглядеть официально и быть согласованы с руководством, так что их даже писать лень. Хотя, на мой взгляд то что у нас есть сейчас - всяко лучше правки в блокноте по RDP сайта на asp.
- У нас поменялись условия технической поддержки, на мой взгляд - в лучшую сторону. По крайней мере нагрузка на неё снизилась, а многие клиенты стали ей при этом больше удовлетворены.
- Мы довели нашу систему сборки продуктов на платформе третьей версии дистрибутивов до состояния, когда система собирается в две команды. На пятой платформе все продукты собираются за 3-4 минуты одной командой. Вывод - гит таки рулит.
- Часть нашего кода опубликована на github под свободной лицензией, надеюсь кому-то да пригодится удобная консольная менюшка для конфигов, на которую была потрачена неделя моего времени.
- Первый выпущенный на новой платформе продукт - сервер доступа Carbon AS 4 всё ешё доступен абсолютно бесплатно, да ещё и с техподдержкой SLA-Сопровождение на месяц в подарок!
- На тестовом стенде получилось исправить последний критичный баг пятой платформы, после чего её можно будет активно использовать на продакшн серверах - теперь русский язык нормально работает и не в виртуальных машинах!
- Carbon Reductor был выпущен в виде модуля под популярные серверные ОС: Carbon 5, Ideco ACP и Ideco AS, Debian 6.0.6, Centos 6.3 а также в виде отдельного дистрибутива. А ещё он прошёл суровые нагрузочные испытания и справился, да и всё ещё исправляется с потоком в 320 килопакетов в секунду.
А я? Я стал гораздо лучше знать C, стал чуть ли не гуру ядра Linux (в сетевой подсистеме), понял, что одним программированием продукты не делаются и отрастил бороду. Всё таки, программисты универсалы на мой взгляд ценная штука. :)
понедельник, 7 января 2013 г.
Минимизация объема диска в ubuntu
В виртуальных машинах обычно ограничен размер диска, плюс половина пользовательских приложений не нужна. Поэтому я обычно делаю так
sudo apt-get purge openoffice.org-core network-manager evolution-common evolution-webcal ubuntu-docs firefox smbclient hplip humanity-icon-theme hplip-data openoffice.org-thesaurus-ru openoffice.org-thesaurus-en-us openoffice.org-style-human openoffice.org-thesaurus-en-au openoffice.org-hyphenation-en-us openoffice.org-hyphenation empathy gwibber transmission tomboy
sudo apt-get purge openoffice.org-core network-manager evolution-common evolution-webcal ubuntu-docs firefox smbclient hplip humanity-icon-theme hplip-data openoffice.org-thesaurus-ru openoffice.org-thesaurus-en-us openoffice.org-style-human openoffice.org-thesaurus-en-au openoffice.org-hyphenation-en-us openoffice.org-hyphenation empathy gwibber transmission tomboy
воскресенье, 6 января 2013 г.
Что я делаю с Centos 6.3 сразу после установки
#!/bin/bash
# configs
#cat > /etc/sysconfig/network-scripts/ifcfg-eth0 <<EOF
#network settings
#EOF
# sed
sed -i /etc/inittab 's/id:5/id:3/g'
sed -i /etc/selinux/config 's/=enforcing/=disabled/g'
# yum
yum -y install openssh-server
yum -y install git
# chkconfig
chkconfig --add sshd
# restart
/etc/init.d/sshd restart
# vim
echo color ron >> /etc/vimrc
vim /etc/sysconfig/network-scripts/ifcfg-eth0
Подписаться на:
Комментарии (Atom)