اطلاعیه

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

مشکل در نوشتن 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.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 
    آخرین ویرایش توسط 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