Поиск по этому блогу

среда, 12 сентября 2012 г.

Автоматическая смена настроек proxy в squid.

Всем доброго времени  суток. В связи с тем что на работе у меня раздача интернета идет через proxy, приходилось постоянно вручную менять настройки всех приложений использующих интернет для работы с proxy или без него в зависимости от моего местоположения (на работе, дома). Конечно же захотелось мне автоматизировать сие действие. Для начала просто настроил squid на каскадирование. То есть все интернет приложения использовали локальный прокси который был всегда, а сам же локальный прокси (squid) был настроен на работу с прокси на работе. Когда приходил домой просто комментировал строчки и перезапускал squid. Но и это меня не устраивало захотелось полной автоматизации. И тут пришлось немного с бубном по прыгать. В итоге был написан такой вот скрипт:



#!/bin/bash
R=$(nm-tool|grep State|cut -f2|grep -o "connected (global)")
B='connected'
echo $R | grep $B >/dev/null 2>&1; while [ "$?" != "0" ];
do
echo "Интернета пока НЕТ"
done
echo $R | grep $B >/dev/null 2>&1; if [ "$?" = "0" ];
then
ping -c 1 192.168.100.1 > /root/ping
a=$(cat /root/ping | tail -n2 | head -n1 | awk {'print $6'} | sed s/%//)
echo $a
if [ $a != 0 ]
then date > /root/fail && cp /etc/squid3/squid.conf.3 /etc/squid3/squid.conf && service squid3 restart
else date > /root/fail && cp /etc/squid3/squid.conf.2 /etc/squid3/squid.conf && service squid3 restart
fi
fi
echo "ЗАЕБИСЬ НАЧАЛЬНИКА"
exit 0

Ну собственно и все). Кому непонятно что зачем и почему спрашивайте...расскажу. Может быть у кого то есть более красивое решение?

Ах да, чуть не забыл - чтоб все это работало нужно этот скрипт сделать исполняемым, например:

sudo chmod a+x inet.sh
Ну и положить его в директорию /etc/NetworkManager/dispatcher.d/
sudo cp inet.sh  /etc/NetworkManager/dispatcher.d/inet.sh

Ну и больше никаких действий не требуется. Все будет выполнятся автоматически при смене NetworkManager'ом подключения, будь то проводное или wifi. 

Комментариев нет:

Отправить комментарий