Цикл скриптов: kubuntu vpn script-like connection
#! /bin/sh
PATH=/usr/local/sbin:/usr/sbin:/sbin:/usr/local/bin:/usr/bin:/bin
case "$1" in
start)
if ifconfig|grep ppp >/dev/null;
then
echo "Already started"
ifconfig|grep -A6 ppp;
else
if ps aux|grep ppp|grep -v grep >/dev/null;
then killall -qg pppd;
fi
if ps aux|grep pptp|grep -v grep >/dev/null;
then killall -qg pptp >/dev/null;
fi
pppd call $2
echo -n "Connecting... "
until ifconfig|grep ppp >/dev/null; do sleep 1;done
echo "ok"
fi
;;
stop)
ifconfig ppp0 down >/dev/null 2>/dev/null
/etc/ppp/ip-down
killall -qg pppd >/dev/null
killall -qg pptp >/dev/null
;;
status)
if ifconfig|grep ppp >/dev/null;
then ifconfig|grep -A6 ppp;
else echo "ppp is down"
fi
;;
restart)
if ifconfig|grep ppp0 >/dev/null;
then
echo "Stopping ppp interface"
/etc/ppp/ip-down
killall -qg pppd >/dev/null
killall -qg pptp >/dev/null;
fi
pppd call $2
echo -n "Connecting... "
until ifconfig|grep ppp >/dev/null; do sleep 1;done
echo "ok"
;;
automate)
clear
if ifconfig|grep ppp >/dev/null;
then
echo "Already started"
clear
echo "Running..."
ifconfig|grep ppp
while ifconfig|grep ppp >/dev/null;
do
TEMPOS=$(ifconfig|grep -A6 ppp|grep --color=no "RX bytes")
echo -ne "$TEMPOS \r"
sleep 1;
done
echo "Restarting..."
/etc/init.d/networking automate $2;
else
if ps aux|grep ppp|grep -v grep >/dev/null;
then killall -qg pppd;
fi
if ps aux|grep pptp|grep -v grep >/dev/null;
then killall -qg pptp >/dev/null;
fi
/etc/ppp/ip-down
pppd call $2
echo "Connecting..."
until ifconfig|grep ppp >/dev/null; do sleep 1;done
echo "ok"
clear
echo "Running..."
while ifconfig|grep ppp >/dev/null;
do
TEMPOS=$(ifconfig|grep -A6 ppp|grep --color=no "RX bytes")
echo -ne "$TEMPOS \r"
sleep 1;
done
echo "Restarting..."
/etc/init.d/networking.ppp automate $2;
fi
;;
*)
if ifconfig|grep ppp >/dev/null;
then
echo "ppp is up"
ifconfig|grep -A6 ppp;
else echo "ppp is down";
fi
echo "Usage: /etc/init.d/networking {start|stop|restart|automat}"
;;
esac
exit 0
если скрипт назвать ppp.sh , то...
Сам VPN уже должен быть настроен(т.е. написаны /etc/ppp/chap-secrets, /etc/ppp/peers/ppname)
Кроме того НЕОБХОДИМО правильно настроить /etc/ppp/ip-up.local и /etc/ppp/ip-down.local, так что бы все нужные роуты прописывались при подключении/отключении
возможные команды инициация ppp-подключния с именем ppname:
PATH=/usr/local/sbin:/usr/sbin:/sbin:/usr/local/bin:/usr/bin:/bin
case "$1" in
start)
if ifconfig|grep ppp >/dev/null;
then
echo "Already started"
ifconfig|grep -A6 ppp;
else
if ps aux|grep ppp|grep -v grep >/dev/null;
then killall -qg pppd;
fi
if ps aux|grep pptp|grep -v grep >/dev/null;
then killall -qg pptp >/dev/null;
fi
pppd call $2
echo -n "Connecting... "
until ifconfig|grep ppp >/dev/null; do sleep 1;done
echo "ok"
fi
;;
stop)
ifconfig ppp0 down >/dev/null 2>/dev/null
/etc/ppp/ip-down
killall -qg pppd >/dev/null
killall -qg pptp >/dev/null
;;
status)
if ifconfig|grep ppp >/dev/null;
then ifconfig|grep -A6 ppp;
else echo "ppp is down"
fi
;;
restart)
if ifconfig|grep ppp0 >/dev/null;
then
echo "Stopping ppp interface"
/etc/ppp/ip-down
killall -qg pppd >/dev/null
killall -qg pptp >/dev/null;
fi
pppd call $2
echo -n "Connecting... "
until ifconfig|grep ppp >/dev/null; do sleep 1;done
echo "ok"
;;
automate)
clear
if ifconfig|grep ppp >/dev/null;
then
echo "Already started"
clear
echo "Running..."
ifconfig|grep ppp
while ifconfig|grep ppp >/dev/null;
do
TEMPOS=$(ifconfig|grep -A6 ppp|grep --color=no "RX bytes")
echo -ne "$TEMPOS \r"
sleep 1;
done
echo "Restarting..."
/etc/init.d/networking automate $2;
else
if ps aux|grep ppp|grep -v grep >/dev/null;
then killall -qg pppd;
fi
if ps aux|grep pptp|grep -v grep >/dev/null;
then killall -qg pptp >/dev/null;
fi
/etc/ppp/ip-down
pppd call $2
echo "Connecting..."
until ifconfig|grep ppp >/dev/null; do sleep 1;done
echo "ok"
clear
echo "Running..."
while ifconfig|grep ppp >/dev/null;
do
TEMPOS=$(ifconfig|grep -A6 ppp|grep --color=no "RX bytes")
echo -ne "$TEMPOS \r"
sleep 1;
done
echo "Restarting..."
/etc/init.d/networking.ppp automate $2;
fi
;;
*)
if ifconfig|grep ppp >/dev/null;
then
echo "ppp is up"
ifconfig|grep -A6 ppp;
else echo "ppp is down";
fi
echo "Usage: /etc/init.d/networking {start|stop|restart|automat}"
;;
esac
exit 0
ppp.sh start ppname
отключить все ppp подключения:
ppp.sh stop
отключить все ppp подключения и подключается к ppname
ppp.sh restart ppname
показать статус ppp подключений
ppp.sh status
инициация ppp-подключния с именем ppname, и дальнейший мониторинг трафика и рестарт подключения при обрыве связи (иногда работает некорректно). И еще, к сожалению работает только если сам скрипт лежит в /etc/init.d/ppp.sh Так что правте так как вам будет удобно:
ppp.sh automate ppname
P.S. Не забудьте сделать файл исполняемым