2014-06-25 48 views
-2

我是Linux/Asterisk的新手。我試圖編寫一個shell腳本來查找我的SIP中繼註冊,如果發現UNREACHABLE,那麼它會執行命令並檢查我的本地IP,如果我的本地IP是192.168.1.106,那麼它會將IP更改爲192.168.1.150反之亦然,然後發出命令,網絡服務重新啓動和amportal重新啓動。自動IP變更的Shell腳本

到目前爲止,我已經寫了以下內容,只是看起來,它似乎是錯誤的。任何幫助將不勝感激。由於

#!/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

請具體說明您認爲是錯誤的。 – l0b0

+0

只是要把它拋出去 - 確保你正在運行通過ifconfig作爲根改變IP的任何腳本。 –

回答

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是有用的。

+0

我的SIP中繼線每隔幾天就會發送一次UNREACHABLE,有時會在2,有時會在3之後。將其恢復在線狀態的唯一方法是更改​​我的本地IP。 http://forums.asterisk.org/viewtopic.php?f=1&t=90610 因此,我試着編寫一個腳本來檢測我的主幹不可達,並進行IP更改並重新啓動星號。 – user3761509

+0

然後問題在於不斷變化的IP,而且這種解決方法可能非常脆弱。 – l0b0