пятница, 22 марта 2013 г.

Перевели UTM5 с 32 битной системы на 64-битную и пиздец??


UTM5. URFAclient на PHP. Error calling function.



Для 64-х битных систем, если при вызове пользовательских функций возникает ошибка "Error calling function"
Всему виной php-функция unpack. Костыль нашел на форуме netup.ru.
Нужно поправить функцию AttrGetInt в файле URFAClient_Packet.php

  function AttrGetInt($code)
    {
                if (isset($this->attr[$code]['data'])) {
                    $x = unpack("N", $this->attr[$code]['data']);
                    if ($x[1]>2147483647) return $x[1]-4294967296;
                    return $x[1];
                } else {
                        return FALSE;
                }
    }

если же после переноса или установке присуствует ошибка
 Warning: Cannot modify header information - headers already sent by...  

 проверьте наличие директивы output_buffering в файле php.ini и включите ее (on поставьте или 4096) 

четверг, 21 марта 2013 г.

Цикл выполняет действие при определенном выражении в логе

Цикл while построчно проверяющий лог на наличие определенного выражения, как только выражение найдено, выполняется нужная команда

Также после выполнения команды скрипт посылает письмо на почтовый ящик


while [ 1=1 ]; do
tail -F  /var/log/httpd-error.log | grep -m 1 "exit signal Segmentation fault"
/usr/local/etc/rc.d/apache22 restart
sleep 5;
S=/tmp/apache_restart.succes
 echo "Apache has restarted succesfully!">$S
 echo "Hostname: $(hostname)">$S
 echo "Apache has restarted succesfully!">>$S
 mail -s "APACHE HAS RESTARTED!" "s@it-lab.md" <$S
 rm -f $S
done

среда, 20 марта 2013 г.

Скрипт массового пинга хостов

CMD Скрипты, которые проверяют ip адреса из текстового файла и на выходе выдают 2 списка, alive и dead.


check.cmd

@Echo off
for /F %%i in (c:\ip.txt) do call report.cmd %%i

report.cmd
@Echo off
ping -n 1 -w 1000 %1 >nul
if %errorlevel%==0 goto good
goto bad
:good
echo %1>>alive.txt
goto fin
:bad
echo %1>>dead.txt
:fin

P.S. пути подправить под себя.

Скрипт удаляет все сообщения из очереди Postfix

скрипт удаляет все сообщения почтового ящика из очереди, куда идет спам

вторник, 12 февраля 2013 г.

Скрипт записи mac адреса в ARP таблицу на CISCO


Часто бывает, что необходимо отправлять команды на cisco извне. В моем случае необходимо отключать доступ юзеров в интернет, один из способов - это подставление липовых mac'ов в ARP таблицу маршрутизатора. NetUP UTM5 Billing умеет работать с cisco на уровне добавления записей в динамический access-list, но не все cisco поддерживают эти динамические листы. Итак, отправляем из биллинга команду, которая вызывает нижеописанный скрипт.
Скрипт написан на Bash с использованием Expect.

#!/bin/bash
prompt="*#"
promptconf="*(config)#"

четверг, 7 февраля 2013 г.

Скрипт, который копирует код сайта и дамп базы на удаленный фтп


#!/bin/sh

DIR=/backup
DATA=`date '+%Y%m%d'`
FTPU="user"
FTPP="password"
FTPS="ftp-host"
NOW=$(date +"%d-%m-%Y")
cd $DIR
find $DIR/* -mtime +1 -exec rm -f {} \;
mysqldump -uroot --password='password' base  > base-$DATA.sql
tar -czf hostname-$DATA.tar.gz /path/to/folder
for file in *-$DATA.*
do
echo "$file" >> $DIR/current
done
rm -f $DIR/current
/usr/local/bin/lftp -u $FTPU,$FTPP -e "mkdir backup/$NOW;cd backup/$NOW; mput $DIR/*; quit" $FTPS
echo "Backup Server $DATA" | mail -s "Backup Server $DATA" s@it-lab.md < $DIR

Как выявить медленные SQL запросы?

Это случалось с каждым из нас при разработке веб-сайтов или приложений, использующих MySQL в качестве базы данных. Производительность внезапно сильно падала, и вы не имели понятия, почему это случилось. Этому могут быть причиной многие факторы (сильная загрузка CPU, нехватка дискового пространства, или слабая пропускная способность канала), но также это может быть и неоптимизированный запрос, выполняемый намного дольше, чем должен.

Как узнать, какие из запросов выполняются дольше всего?
В MySQL есть встроенный функционал для ведения логов медленных запросов.

Для включения этого функционала необходимо произвести одно из действий:
  1. добавить следующие строки в /etc/my.cnf:
    log-slow-queries=/tmp/slow_queries.log
    long_query_time=1