понедельник, 30 декабря 2013 г.

Бэкап системы в "облако".

Небольшой пост о скрипте, который создает бекап системы и скидывает в яндекс диск. Да, знаю, что подобных мануалов куча. Но мне не хочется потом искать в интернете мануал. А тут свой, под рукой всегда =).

Для начала устанавливаем сам яндекс диск. Ничего сложного. Все подробно описано по ссылке http://help.yandex.ru/disk/cli-clients.xml

Теперь скрипт.
 #!/bin/sh  
 back=backup-`date '+%d-%B-%Y'`  
 yadisk=/media/yandex.disk/backup  
 cd /tmp  
 tar -cvpf ./fullbackup.tar --exclude=/proc --exclude=/dev --exclude=/media --exclude=/mnt --exclude=/proc --exclude=/sys --exclude=/temp --exclude=/tmp --exclude=/usr/src --exclude=/var/spool/squidcache /  
 cd $yadisk  
 7z a $back.7z -mx3 /tmp/fullbackup.tar -v200M  
 for i in `find * | grep -v "$back"`; do rm $i; done  
 rm -f /tmp/fullbackup.tar  


Где:

/media/yandex.disk/backup — каталог примонтированого яндекс диска.

backup-`date '+%d-%B-%Y'` — шаблон имени нашего бэкапа.

--exclude — каталоги, которые исключаем из архивирования. 

-mx3 — степень сжатия. Можно поставить mx7, уровень сжатия высокий, но и выполняться будет дольше. Мне достаточно и 3 уровня.

-v200M — разделяем на архивы по 200Mb (мне так удобней)

for i in `find * | grep -v "$back"`; do echo $i; done — удаляет предыдущий бэкап (чтоб не занимало место, на яндекс диск не так много и места, а каждый бэкап у меня занимает по 3 Gb =) ). Кому не нужно просто удаляем строку.

Не забывает делать его исполняемым. 
Сперва бэкапим все tar'ом (чтоб сохранились права доступа файлов), а потом сжимаем и делим все 7z. Все это закинул в крон, чтоб в раз в неделю запускался.

суббота, 31 августа 2013 г.

Парсер списка запрещеных сайтов Роскомнадзора


Надоела  уже порядком эта заглушка =).

Нет, я не собираюсь покупать курительные смеси или смотреть детское порно xD. Но все прекрасно знают какие люди работают в этой организации. Блокировать они горазды. А вот вернуть доступ к сайту, к которому больше нет претензий, для них непосильная задача.

Играться с прокси серверами, расширениями для браузера или ходить по анонимайзерам мне было лень. Поэтому хотел инструмент, который раз настроишь и забыл.

Последовательность действий такая:
1. Настраиваем OpenVpn подключение к какому нибудь буржуйскуму серверу.
2. Получаем список заблокированных ресурсов.
3. Парсим его, извлекая  нужные нам IP.
4. Прописываем маршруты.

Первый пункт описывать тут не стану. С этим нет проблем. Остальное решается с помощью вот такого скрипта
#!/bin/sh
file=/etc/openvpn/black_ip.list
dmp=/tmp/dump.csv 
tmp=/tmp/black_ip.tmp
gw=tun1
dadr="rutor.org nnm-club.me nnm-club.info"

wget -q https://www.assembla.com/code/z-i/git/nodes/master/dump.csv?_format=raw -O $dmp

grep -oE '\b[0-9]{1,3}(\.[0-9]{1,3}){3}\b' $dmp |sort -u   > $tmp
for i in $dadr 
 do
 nslookup $i | grep Addr | grep -v 127.0.0.1 | awk {'print$2'} >> $tmp
done

grep -Fvf $file $tmp >> $file

if [ -n "`ip rule | grep "lookup 10"`" ]; 
then 
 echo "Table 10 exists" 
else 
 echo "Table 10 missing. Create..."
 ip rule add pref 10   from all lookup 10
fi

ip route flush cache
ip route flush table 10

awk {'print$1'}  $file | while read i;  
 do  
ip route add to $i/32 dev tun1 table 10 > /dev/null 2>&1
done  
  
Итак. Список получаем с https://www.assembla.com/code/z-i/git/nodes/master/dump.csv?_format=raw. Парсим его, вытаскивая IP. И прописываем маршруты. Готово. Можем заходить и выбирать дурь на заблокированные ресурсы.

Список достаточно быстро обновляется. Можно кинуть скрипт в крон.

UPD. В конфиг OpenVpn добавим

 script-security 2  
 up /путь/к_скрипту  

и предыдущий скрипт будет запускаться сам, как только появится подключение к OpenVpn.