من میخوام وضعیت یکی از یوزرهای voip داخل سرورم (100) رو مانیتور کنم برای همین از دستور asterisk -rx 'sip show peer 100' استفاده میکنم. که یک خروجی شبیه زیر میده :
با کمک grep و دستور awk تونستم فقط خط Status رو که وضعیتش OK زده رو به عنوان خروجی بکشم بیرون :
بعد از این من اومدم یک شل اسکریپت نوشتم که اگر خروجی دستور asterisk -rx 'sip show peer 100' | grep --text -i Status | awk '{print $3}' برابر با OK بود عدد 1 رو چاپ کنه در غیر اینصورت عدد 0 را نمایش بدهد که این عدد رو میخوام بدم به یک نرم افزار مانیتورینگ.
shell script که زدم به صورت زیر هستش :
توی خط اول اون کامند asterisk -rx رو زدم که بعدش ریختم توی متغییر status سپس در خط دوم هم تعریف کردم اگر متغییر status برابر با OK بود در خط بعد گفتم با کامند echo عدد 1 رو نمایش بده و در غیر اینصورت عدد 0 را نمایش بدهد. ولی وقتی اسکریپت رو اجرا میکنم با پیغام خطاهای زیر مواجه میشم :
کد PHP:
Status : OK (5 ms)
Useragent : Grandstream GXP2160 1.0.4.23
Reg. Contact : sip:100@192.168.1.110:5060
Qualify Freq : 60000 ms
Keepalive : 0 ms
Sess-Timers : Accept
Sess-Refresh : uas
Sess-Expires : 1800 secs
Min-Sess : 90 secs
RTP Engine : asterisk
کد PHP:
[root@asterisk11 ~]# asterisk -rx 'sip show peer 100' | grep --text -i Status | awk '{print $3}'
OK
shell script که زدم به صورت زیر هستش :
کد PHP:
#!/bin/bash
"asterisk -rx 'sip show peer 100' | grep --text -i Status | awk '{print $3}'" status
if [ "$status" == "OK" ]
then
echo 1
elseif
echo 0
exit
کد PHP:
[root@asterisk11 ~]# ./EXT-100.sh
./EXT-800.sh: line 2: asterisk -rx 'sip show peer 100' | grep --text -i Status | awk '{print }': command not found
./EXT-100.sh: line 9: syntax error: unexpected end of file
کامنت