27 нояб. 2008 г.

отстреливаем Sleep подключения...

итак... иногда бывает ситуация (толи ошибка на сайте, толи малоли что).... вообщем много соединений со статусом Sleep пока идет поиск причины их нужно как-то удалять. Перезагружать mysql - это не выход. Задача - удалять соединения которые находятся в статусе Sleep. кому читать некогда весь пост вот рецепт - sh скрипт: ---- #!/bin/bash LOGIN=you_login PASS=you_pass /usr/bin/mysqladmin -u ${LOGIN} -p${PASS} kill `/usr/bin/mysql -u ${LOGIN} -p${PASS} -Ns -e "show processlist" | grep "Sleep" | awk '{print $1}' | xargs | tr " " ","` ---- теперь по порядку, кому интересно... Первым делом нужно получить этот самый список процессов которые у нас работают (в клиенте набираем): >show processlist; получим список.... руками это делать не гламурно, будем это делать в консоле: ---- >/usr/bin/mysql -u ${LOGIN} -p${PASS} -Ns -e "show processlist" ---- -Ns убираем название столбцов и линии.... -e "и в скобках комманда которую нужно выполнить клиенту" отфильтруем результат: --- grep "Sleep" --- впринципе можно фильтровать не только Sleep, а и по адресу, по базе ... фантазию включаем... из всего этого вывода нам нужна только 1 колонка, там где номер процесса: ---- awk '{print $1}' ---- теперь у нас будет вывод в столбик, нам нужно в линию: ---- xargs ---- но еще нам нужно заменить пробел между номерами процессов на запятую: ---- tr " " "," ---- все... теперь мы имеем список всех нужных нам процессов в одну строчку, перечисленных через запятую. и делаем это все в качестве параметра mysqladmin.

8 окт. 2008 г.

дополнил свой скрипт по postfix'у

переделал скрипт который обрабатует письма, теперь выглядит таг:
#!/bin/sh
SENDMAIL="/usr/sbin/sendmail -i"
EGREP=/bin/egrep
EX_UNAVAILABLE=69
SIDELINE_DIR="/var/spool/filter"
SPAMLIMIT=5
trap "rm -f /var/tempfs/out.$$" 0 1 2 3 15
cat | /opt/spamassasin/bin/spamc > /var/tempfs/out.$$
if $EGREP -q "^X-Spam-Level: \*{$SPAMLIMIT,}" < /var/tempfs/out.$$  
then
    FROM=`cat /var/tempfs/out.$$ | $EGREP -i "From: " | head -n 1`
    echo `date +%Y-%m-%d_%R` $FROM >> /var/log/spamd_delete
  #mv /var/tempfs/out.$$ $SIDELINE_DIR/`date +%Y-%m-%d_%R`-$$
else
 $SENDMAIL "$@" < /var/tempfs/out.$$
fi
exit $?  
мож кому пригодится

обработка почты Postfix

вчера появилась необходимость прикрутить на наших серверах spamd (наконецто начальство дало комманду)... потрачено почти 5 часов, т.к. репы для SuSE 10 не поддержуются ныне... разобрался что такое perl CPAN.
Но открыл для себя америку так сказать... итак. 
Нужно как-то обрабатывать входящую почту. 
по логике вещей - нужно что бы postfix отдавал входящее сообщение куда то на обработку.
берем правим /etc/postfix/master.cf
добавляем правило фильтр:
spamchk   unix  -       n       n       -       10      pipe
flags=Rq user=spamd argv=/opt/spamassasin/bin/spamchk -f ${sender} -- ${recipient}
тут мы имеем:
1. spamchk - имя фильтра обрабатывающего
2. flags - хз, но с Rq работает )
3. user - от чьего имени запускать
4. argv - путь к коммандной оболочке, и параметры откого кому... а в STDOUT postfix лупит тело сообщения.
фильтр есть, теперь его нужно к чему-то применить... в том же файле:
smtp      inet  n       -       n       -       50       smtpd
-o content_filter=spamchk:dummy
строка smtp inet... у нас уже есть, она означает транспорт по умолчанию, а вот следующей строкой мы к нему добавляем "-o ..." - и говорим что все содержимое должно отдаваться на spamchk фильтр.
теперь собсно сам файл:
#!/bin/sh
SENDMAIL="/usr/sbin/sendmail -i"
trap "rm -f /var/tempfs/out.$$" 0 1 2 3 15
cat | /opt/spamassasin/bin/spamc > /var/tempfs/out.$$
$SENDMAIL "$@" < /var/tempfs/out.$$ exit $? 
файл делает по шагам следующее...
все содержимое которое ему было передано - передает на spamc (это клиент SpamAssasin) и весь "обработанный" вывод кидает во временный файл /var/tempfs/out.$$
затем следующим шагом все содержимое которое находится в /var/tempfs/out.$$ мы отдаем sendmail'у для локальной доставки... и код возврата возвращаем для postfix...
вот-с...
теперь у нас есть поле для фантазий... spamc у нас настроен так что бы заменять Subject (добавлять к письму если оно идентифицировано как спам - [***SPAM***])
соответственно перет отправкой сообщения внутреннему sendmail'у мы можем как угодно его обработать... мы можем начиная от "просто вести статистику" в БД/Файл еще как нить, можно добавить на наличие после spamc флага X-SPAM либо другого флага вообще письмо никуда не отсылать... 
и т.д. и т.п. - полет для фантазии хороший получается )
седня буду эксперементировать... )

почитал про Google Chrome

Сегодня ночью пересилил себя и почитал про гугл хром... какие в нем возможности - остался в восторге... для тех кто еще не читал/не смотрел - советую.

традиционное....

по традиции создаю сообщение.
Hello World. )