четверг, 5 декабря 2013 г.

вторник, 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 г.

четверг, 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

понедельник, 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

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.

вторник, 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, что удобно для сортировки

понедельник, 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

За первую половину первого месяца нового года у нашей компании произошло много нового.

  1. Мы завершили ребрендинг и больше почти никак не связаны с Ideco кроме как дружбой с бывшими коллегами и, иногда, обменом технологиями. Теперь мы уже официально зовёмся Carbon Soft, а не отдел АСР компании Ideco.
  2. Мы переехали на новый сайт, теперь больше нет никаких проблем с публикацией новостей, хехех, конечно же есть, они должны выглядеть официально и быть согласованы с руководством, так что их даже писать лень. Хотя, на мой взгляд то что у нас есть сейчас - всяко лучше правки в блокноте по RDP сайта на asp.
  3. У нас поменялись условия технической поддержки, на мой взгляд - в лучшую сторону. По крайней мере нагрузка на неё снизилась, а многие клиенты стали ей при этом больше удовлетворены.
  4. Мы довели нашу систему сборки продуктов на платформе третьей версии дистрибутивов до состояния, когда система собирается в две команды. На пятой платформе все продукты собираются за 3-4 минуты одной командой. Вывод - гит таки рулит.
  5. Часть нашего кода опубликована на github под свободной лицензией, надеюсь кому-то да пригодится удобная консольная менюшка для конфигов, на которую была потрачена неделя моего времени.
  6. Первый выпущенный на новой платформе продукт - сервер доступа Carbon AS 4 всё ешё доступен абсолютно бесплатно, да ещё и с техподдержкой SLA-Сопровождение на месяц в подарок!
  7. На тестовом стенде получилось исправить последний критичный баг пятой платформы, после чего её можно будет активно использовать на продакшн серверах - теперь русский язык нормально работает и не в виртуальных машинах!
  8. 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

воскресенье, 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