VPN & RDP скрипт (инструмент для администратора)

Наконец то я решился.
Итак имеем задачу; Быстро подключатся к удаленной машине по RDP через VPN и последующее отключение VPN после закрытия RDP подключения. А так же как бонус запуск и остановка VPN к нужным сетям.

Не думаю что данной темой притяну много комментаторов и + в карму, но все же решился хотя бы для того, чтоб на родном сайте иметь такую вот инструкцию для себя.
Поехали!

Установка необходимых пакетов

Для работы нашего скрипта понадобится программа pptp. Пишем в Konsole:
sudo apt-get install pptp-linux

Создания файла инструкции для VPN подключения

Итак, создадим первое соединение. Точнее, файл настроек для него. Для этого нам необходимо проделать следующее:
1.Создать файл
sudo nano -w /etc/ppp/companiya
companiya - я советую сразу давать осмысленные названия файлам-настроек, чтоб в будущем пореже залазить в папку ppp для уточнения - "А как же подключится в Рога_и_Копыта". Ибо мы крутые админы и в этой папке у нас не один десяток файлов-подключений будет. ;)
2. Вписываем туда следующее содержимое
pty "pptp 10.0.0.1 --nolaunchpppd"
name user
password "password"
refuse-eap
lcp-echo-failure 30
lcp-echo-interval 5
refuse-chap
refuse-mschap
require-mschap-v2
debug
noauth
nobsdcomp
nodeflate
require-mppe-128

не буду вдаваться в подробности, отмечу основные моменты которые будет необходимо менять для подключения:
a) 10.0.0.1 - вместо этого пишем hostname или ip сервера к которому осуществляется !VPN! подключение
b) name user - пишем имя пользователя для подключения
c) password "password" - пароль для подключения
В принципе на втором этапе все.

Скрипт для подключение VPN&RDP

Итак, чтоб скрипт без проблем можно было запускать из командной строки кидаем его например в /usr/local/bin/
Для этого делаем следующее:
sudo nano -w /usr/local/bin/vpn
вставляем туда следующее:
#!/bin/sh                                  
      case "$2" in                         
      rdp)                                 
         set $1 vpn $3                     
         . $0                              
         echo "Try to start rdesktop to addr $MASK.$3"
         rdesktop ${MASK}.$3 -u administrator -g 1270x750 -a 16  -k common
         $0 $1 stop
      ;;
      stop)
         echo -n "Stopping vpn: "
         poff $1
         echo
      ;;
      vpn)
         echo -n "Starting vpn: "
         pon $1
         sleep 6
         lolo=`ifconfig | grep "" -c`
         lolo=`expr $lolo - 6`
         MASK=`ifconfig | grep "" -n | grep $lolo: | awk '{print $3}' | awk -F: '{print $2}' | awk -F. '{print $1"."$2"."$3}'`
         lala=`ifconfig | grep $MASK -n -m 1 | awk '{print $1}' | awk -F: '{print $1}'`
         lala=`expr $lala - 1`
         blabla=`ifconfig | grep "" -n | grep ${lala}: | awk '{print $1}' | awk -F: '{print $2}'`
         echo $MASK
         route add -net $MASK.0 netmask 255.255.255.0 dev $blabla
      ;;
      *)
      $0 $1 vpn
      ;;
esac

делаем его исполняемым
chmod +x /usr/local/bin/vpn

Рассмотрим скрипт. Точнее то, на что вам следует обратить внимание:
1. Строка #7
rdesktop ${MASK}.$3 -u administrator -g 1270x750 -a 16  -k common
Здесь описывается настройки подключения RDP посредством rdesktop - ИМХО наилучшим клиентом RDP под Linux
Я для удобства сразу подставляю пользователя (-u administrator), делаю удобное для меня разрешение (-g 1270x750) высчитанное так чтоб на моем wide экране я всегда видел панель задач Kubuntu, чтоб не нагружать сервер к которому осуществляю подключение делаю 16 битную цветовую схему (-a 16), ну и заплатку чтоб "нормально" работала переключалка рус\анг (-k common).
${MASK}.$3 пока не будем трогать - просто скажу что сюда подставляется ip сервера к которому осуществляется RDP подключение.

2. Строка #20
lolo=`expr $lolo - 6`
здесь строка в которой отражен ip который мы получили при подключении по vpn. Таким образом мы извлекаем подсеть. Обратите внимание на цифру 6. Чтоб было ясно я покажу на примере. Например мы сделали подключение
sudo pon companiya
и затем
ifconfig
Видим примерно такую картину:
    ...........
          RX packets:2899 errors:0 dropped:0 overruns:0 frame:0
          TX packets:2899 errors:0 dropped:0 overruns:0 carrier:0
          коллизии:0 txqueuelen:0
          RX bytes:592049 (592.0 KB)  TX bytes:592049 (592.0 KB)

ppp0      Link encap:Протокол PPP (Point-to-Point Protocol)
          inet addr:192.168.13.201  P-t-P:192.168.13.200  Mask:255.255.255.255
          ВВЕРХ POINTOPOINT RUNNING NOARP MULTICAST  MTU:1396  Metric:1
          RX packets:9 errors:0 dropped:0 overruns:0 frame:0
          TX packets:8 errors:0 dropped:0 overruns:0 carrier:0
          коллизии:0 txqueuelen:3
          RX bytes:309 (309.0 B)  TX bytes:80 (80.0 B)

я привел не весь листинг ибо нам важны последние строки. Тут в 6й строке снизу видим что мы получили ip=192.168.13.201. ТАК ВОТ у вас есть проблемы то проверьте действительно ли у вас 6 строк и если надо поправьте.
В принципе это все на что вам необходимо обратить внимание.

Как это работает

Вот как выглядеть команда
sudo vpn companiya rdp 1
То есть запускаем скрипт vpn от имени root далее указываем конфигурационный файл для подключения (в данном случае companiya) далее указываем что мы хотим подключится по rdp (указанием опции rdp) и указываем последнюю цифру ip адреса сервера к которому мы осуществляем RDP подключение (в данном случае XXX.YYY.ZZZ.1)
Что делает скрипт?

Если мы осуществили только VPN подключение то отключить его можем следующей командой
sudo vpn conpaniya stop

Вот в принципе и все!
Жду вопросы, предложения, замечания.