Shell脚本自动IP更改



我是Linux/Asterisk的新手。我正试图编写一个shell脚本,查找我的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

跳出来的几件事:

  • 你应该使用"引号
  • whatip=命令替换没有在任何地方结束。
  • 你应该用$(cmd)代替`cmd`
  • 使用更多引号!
  • $runexit 1是无用的,因为$run永远不会被设置为true以外的任何东西。
  • ifconfig不支持ip
  • which asterisk保存到变量中没有意义。只需运行asterisk;它将执行完全相同的查找。

你为什么要这么做呢?

相关内容

  • 没有找到相关文章

最新更新