LINUX.ORG.RU

Bash скрипт


0

0

Привет, ЛОР!

Возникла проблема с LinuxDC. Интернет раздается через роутер, в настройках программы на вкладке Connection стоит Firewall with manual port forward и вписан IP адрес, который присваивается роутеру при подключению к провайдеру через PPPoE. Но так как соединение иногда обрывается, и роутеру после переподключения присваивается новый IP адрес, LinuxDC выдает сообщение:

«Your reported IP: xxx.xxx.xxx.xxx does not match your real IP: yyy.yyy.yyy.yyy»

Возникла мысль написать скрипт, который будет стартовать по расписанию в кроне, скажем, раз в 15 минут, проверять, сменился ли IP адрес, и если да, то вносить изменения в конфиг. файл программы и перезапускать ее. Я с программами обработки текста практически не работал, поэтому прошу помощи у сообщества. Получение IP адреса

IP=`wget -q -O - http://homer.meso.com/remoteip.php`

Дальше нужно в файле /.dc++/DCPlusPlus.xml в строчке

<ExternalIp type="string">xxx.xxx.xxx.xxx</ExternalIp>

заменить xxx на новый IP адрес. Вот с этим и возникла проблема.

Заранее спасибо.

anonymous

sed -i 's/старый_ип/новый_ип/' file

dGhost ★★★
()

Имхо, проще на sed:

sed '/<ExternalIp type="string">xxx\.xxx\.xxx\.xxx<\/ExternalIp>/s/xxx\.xxx\.xxx\.xxx/yyy.yyy.yyy
.yyy/' /.dc++/DCPlusPlus.xml 


где xxx.xxx.xxx.xxx.xxx ваш старый ip-адрес, а yyy.yyy.yyy.yyy ваш новый ip-адрес.

Если у вас новый ip-адрес лежит в переменной IP, то вместо /yyy.yyy.yyy.yyy/' пишите /'$IP/

Если ваше скрипт не знает старого ip-адреса, то вместо xxx\.xxx\.xxx\.xxx
напишите регулярное выражение, соответсвующее ip-адресу, например: 
[0-9][0-9\.]*

И если нужно изменить файл, то опция -i у sed (прочитайте man sed).

mky ★★★★★
()

Настрой роутер, чтобы он тебе всегда давал один и тот же IP по маку и все.

anonymous
()
Ответ на: комментарий от anonymous

> Настрой роутер, чтобы он тебе всегда давал один и тот же IP по маку и все.

А теперь ВНИМАТЕЛЬНО читаем исходное сообщение.

Deleted
()

Всем спасибо за помощь, скрипт написан.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.