用于自动IP更改的Shell脚本

时间:2014-06-25 12:51:05

标签: linux shell asterisk

我是Linux / Asterisk的新手。我正在尝试编写一个shell脚本来寻找我的SIP中继注册,如果找到了UNREACHABLE,那么它会执行一个命令并检查我的本地IP,如果我的本地IP是192.168.1.106那么它会将IP更改为192.168.1.150反之亦然,在发出命令后,重新启动网络服务和重启。

到目前为止,我已写过以下内容,仅仅看起来似乎是错误的。任何帮助将受到高度赞赏。感谢

#!/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 个答案:

答案 0 :(得分:0)

出现了一些事情:

  • 您应该使用"引号。
  • whatip=命令替换不会在任何地方结束。
  • 您应该use $(cmd) instead of `cmd`
  • Use More Quotes!
  • $runexit 1无用,因为$run永远不会设置为true以外的其他任何内容。
  • ifconfigdeprecated in favour of ip
  • which asterisk保存到变量没有意义。只需运行asterisk;它将执行完全相同的查找。

Why are you doing this in the first place?我不知道如何不断更改您的IP是有用的。