Скрипт ClamAV для автоматического сканирования и email уведомлений

Приведу пример скрипта для сканирования и email уведомлений при обнаружении зараженных файлов.

Читать далее «Скрипт ClamAV для автоматического сканирования и email уведомлений»

Скрипт от DDOS

Приведу пример простого скрипта против DDOS атак для NAT серверов.
Скрипт выполняется когда общее число «conntrack» соединений больше 500000, сохраняет в текстовый файл IP-адреcа у которых больше всего «conntrack» соединений, у кого больше 10000 — добавляет в ipset список.

Читать далее «Скрипт от DDOS»

Скрипт просмотра PPS (Packets Per Second)

Скрипт ежесекундно отображает количество входящих и исходящих пакетов в секунду на указанном сетевом интерфейсе.
Содержимое скрипта поместим в файл, например pps.sh и выполним указав имя сетевого интерфейса (остановить выполнение скрипта можно клавишами CTRL+C):

Читать далее «Скрипт просмотра PPS (Packets Per Second)»

Скрипт отправки СМС через Goip4 шлюз для ABillS

Приведу пример PHP скрипта, которым я рассылаю СМС сообщения через GoIP4 шлюз.

Сначала выберем тарифы только с месячным начислением:

SELECT name, tp_id FROM tarif_plans;
SELECT name, tp_id FROM tarif_plans WHERE month_fee>0;

Собственно вот сам скрипт, я запускаю его из cron на отдельном сервере (где я установил GoIP4 СМС сервер):

Читать далее «Скрипт отправки СМС через Goip4 шлюз для ABillS»

Скрипты ip-up и ip-down с ipset для Accel-ppp

Приведу пример скриптов которые я раньше использовал, в список allowip добавлялись IP адреса которым разрешен интернет, а в denyip которые переадресовывались на http страницу с информацией о негативном депозите.

Читать далее «Скрипты ip-up и ip-down с ipset для Accel-ppp»

Скрипт добавления IP адресов из файла в ipset

Понадобилось однажды написать скрипт чтобы добавить в ipset все IP для которых били подняты сессии на сервере доступа, использовался биллинг Abills, поэтому я решил взять IP адреса из MySQL таблицы биллинга.

Первым делом создадим тестовый ipset:

ipset create test iphash

Читать далее «Скрипт добавления IP адресов из файла в ipset»

Скрипт перезагрузки маршрутизаторов Asus

На старых прошивках маршрутизаторов Asus часто замечал, что не полностью открывается веб-интерфейс, отображается не все меню, соответственно настроить его невозможно и при удаленном доступе перезагрузить тоже нельзя, так как не отображается кнопка перезагрузки.
Поэтому взял маршрутизатор Asus RT-N12E, запустил сниффер Wireshark, открыл веб-интерфейс маршрутизатора и нажал кнопку перезагрузки.
В перехваченных пакетах было видно что для перезагрузки выполняется файл Reboot.asp в корневой директории.

Отсюда получился такой скрипт для перезагрузки маршрутизаторов Asus:

#!/bin/sh
ROUTER_IP="192.168.1.1"
USERNAME="admin"
PASSWORD="admin"

# exit if router is down
ping -q -c 1 "$ROUTER_IP" > /dev/null || exit

curl --basic --user "$USERNAME:$PASSWORD" -A "Mozilla/4.73 [en] (X11; U; Linux 2.2.15 i686)" --refer "http://$ROUTER_IP" "$ROUTER_IP/Reboot.asp"

Содержимое скрипта поместим в новый файл, например используя редактор nano («CTRL+X» для выходя и «y» для сохранения изменений):

nano file.sh

Сделаем его исполняемым:

chmod 777 file.sh

После этого выполним:

./file.sh

Также можно в браузере вручную открыть ссылку http://192.168.1.1/Reboot.asp если необходимо один раз перезагрузить маршрутизатор.

Скрипт проверки на пустую директорию

Недавно заметил на одном из своих скриптов резервного копирования что он перестал работать и просто создавал пустую директорию с текущей датой, поэтому возникла идея добавить в него проверку на пустую директорию с отправкой уведомления на email.

Пример скрипта проверки на пустую директорию, с учетом скрытых файлов:

if [ `ls -a /backups/dir/ | grep -v "^\.$" | grep -v "^\..$" | wc -l` = "0" ]; then echo "Empty dir"; else echo "Non empty dir"; fi

Пример проверки директории с именем текущей даты и если она пуста — отправкой email:

if [ `ls -a /backups/`date +%Y-%m-%d`/ | grep -v "^\.$" | grep -v "^\..$" | wc -l` = "0" ]; then (echo "Subject:Empty dir"; echo "Empty dir";) | sendmail info@example.com; else echo "Non empty dir"; fi