Сценарий оболочки для автоматической смены IP-адреса

#linux #shell #asterisk

#linux #оболочка #звездочка

Вопрос:

Я новичок в Linux / Asterisk. Я пытаюсь написать сценарий оболочки, который будет искать мою регистрацию SIP-канала, если он окажется НЕДОСТУПНЫМ, тогда он выполнит команду и проверит мой локальный IP-адрес, если мой локальный IP-адрес равен 192.168.1.106, тогда он изменит IP на 192.168.1.150 и наоборот, после этого выполните команды, перезапустите сетевую службу иперезапуск amportal.

До сих пор я написал следующее, и, судя по всему, это кажется неправильным. Любая помощь будет высоко оценена. Спасибо

 #!/bin/bash
asteriskbin=`which asterisk`
interval=10
ippath=/sbin/ifconfig
ip1=192.168.1.106
ip2=192.168.1.150
trunk="siptrunk"
run=true
while [[ "$run" == "true" ]]; do
checktrunk=`$asteriskbin -rx “sip show peer $trunk” | grep Status | grep -wc OK`
if [[ $checktrunk == 0 ]]; then
echo “TEST Trunk Down”
else
echo “SIP trunk registration OK.”
whatip=`$ippath eth0 | grep 'inet addr:' | cut -d: -f2 | awk '{ print $1}'
if [[ $whatip == $ip1 ]]; then 
ifconfig eth0 $ip2
else
ifconfig eth0 $ip1
network service restart
amportal restart
fi
sleep $interval
done
exit 1
 

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

1. Пожалуйста, уточните, что вы считаете неправильным.

2. Просто собираюсь выбросить это — убедитесь, что вы запускаете любой скрипт, который изменяет IP через ifconfig от имени root.

Ответ №1:

Несколько вещей, которые возникают:

Почему вы это делаете в первую очередь?Я не понимаю, насколько полезно постоянно менять ваш IP-адрес.

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

1. Мои SIP-каналы становятся НЕДОСТУПНЫМИ каждые несколько дней, иногда через 2, иногда через 3. Единственный способ вернуть их в Сеть — это изменить мой локальный IP-адрес. forums.asterisk.org/viewtopic.php?f=1amp;t=90610 Поэтому я пытаюсь написать скрипт, который обнаружил бы, что мой магистральный канал недоступен, и изменил IP, а также перезапустил Asterisk.

2. Тогда проблема заключается в изменении IP-адреса, и этот обходной путь, вероятно, будет очень хрупким.