Вы здесь

Скрипт замены IP в конфиге OpenVPN на Debian

Немного усовершенствовал свой скрипт отправки IP на email. Если у вас на сервере поднят OpenVPN, то в случае изменения внешнего IP, новый адрес будет отправлен вам на e-mail, и в конфиге /etc/openvpn/server.conf в первой строке будет указан также новый IP - адрес.

  1. #!/bin/bash
  2. # парсим текущий IP
  3. ip=`/sbin/ifconfig ppp0 | egrep -io "[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}" | head -1`
  4. ip2=`cat < /home/user/ip.txt`
  5. if [ "$ip" != "$ip2" ] # сравниваем 2 IP, и если они не равны
  6. then
  7.  
  8. echo "$ip" > /home/fess/ip.txt # записываем IP в файл
  9. # удаляем первую строку в /etc/openvpn/server.conf (в ней содержится IP)
  10. sed -i '1d' /etc/openvpn/server.conf
  11. sed -i "1i local ${ip}" /etc/openvpn/server.conf # добавляем в первую строчку текущий ip
  12. cat /home/fess/ip.txt | mutt -x -s "New IP" admin@mail.ru # высылаем IP на email
  13. sleep 3 # ждем 3 секунды
  14. /etc/init.d/openvpn reload # говорим OpenVPN-серверу перечитать конфиг
  15.  
  16. else # если IP не изменился, то завершаем сценарий
  17. exit 0
  18. fi

Отправка письма с IP-адресом осуществляется через консольный почтовый клиент Mutt. О его настройке читайте в моей статье - Настройка Mutt для отправки почты с использованием внешнего smtp-сервера.

После ставим данный скрипт на выполнение в Cron, к примеру, раз в 30 минут, и все.
P.S. Если скрипт как-то можно оптимизировать/упростить, прошу писать в комментарии, буду рад любым советам.