我是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`
- 使用更多引号!
-
$run
和exit 1
是无用的,因为$run
永远不会被设置为true
以外的任何东西。 -
ifconfig
不支持ip
。 - 将
which asterisk
保存到变量中没有意义。只需运行asterisk
;它将执行完全相同的查找。
你为什么要这么做呢?