اطلاعیه

بستن
هنوز اطلاعیه ای در دست نیست.

مشکل در نوشتن shell script در linux برای مانیتور کردن داخلی های asterisk

بستن
X
 
  • فیلتر کردن
  • زمان
  • نمایش
Clear All
پست های جدید

    مشکل در نوشتن shell script در linux برای مانیتور کردن داخلی های asterisk

    من میخوام وضعیت یکی از یوزرهای voip داخل سرورم (100) رو مانیتور کنم برای همین از دستور asterisk -rx 'sip show peer 100' استفاده میکنم. که یک خروجی شبیه زیر میده :
    کد 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 
    با کمک grep و دستور awk تونستم فقط خط Status رو که وضعیتش OK زده رو به عنوان خروجی بکشم بیرون :
    کد PHP:
    [root@asterisk11 ~]# asterisk -rx 'sip show peer 100' | grep --text -i Status | awk '{print $3}'
    OK 
    بعد از این من اومدم یک شل اسکریپت نوشتم که اگر خروجی دستور asterisk -rx 'sip show peer 100' | grep --text -i Status | awk '{print $3}' برابر با OK بود عدد 1 رو چاپ کنه در غیر اینصورت عدد 0 را نمایش بدهد که این عدد رو میخوام بدم به یک نرم افزار مانیتورینگ.
    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 
    توی خط اول اون کامند asterisk -rx رو زدم که بعدش ریختم توی متغییر status سپس در خط دوم هم تعریف کردم اگر متغییر status برابر با OK بود در خط بعد گفتم با کامند echo عدد 1 رو نمایش بده و در غیر اینصورت عدد 0 را نمایش بدهد. ولی وقتی اسکریپت رو اجرا میکنم با پیغام خطاهای زیر مواجه میشم :
    کد PHP:
    [root@asterisk11 ~]# ./EXT-100.sh
    ./EXT-800.shline 2asterisk -rx 'sip show peer 100' grep --text -i Status awk '{print }'command not found
    ./EXT-100.shline 9syntax errorunexpected end of file 
    آخرین ویرایش توسط Habili; در تاریخ/ساعت 02-09-2021, 10:13 AM.

    من قلبی بزرگ با رویاهایی بزرگ دارم. دانسته هایمان را با هم به اشتراک بگذاریم.

    #2
    سلام این مورد رو اتفاقا خودمم درگیرش بودم قبلا ولی وقت نکرده بودم تکمیلش کنم. دستور مربوط به استریسک رو باید توی تک کوتیشن بذارید و شرط elsif هم که گذاشتید درست نیستش. شکل صحیحی که باید کد بزنید به صورت زیر هستش :
    کد PHP:
    #!/bin/bash
    status=`asterisk -rx 'sip show peer 100' | grep --text -i Status | awk '{print $3}'`
    if [ 
    $status OK ]
    then
    echo "1"
    else
    echo 
    "0"
    fi 

    کامنت

    در حال انجام ...
    X