2016-04-13 14 views
-1

Komutumu çalıştırmak için 2 makinenin işlevsel ve 1 makinenin uyuduğundan emin olmalıyım. İşte mantık: Komutu çalıştırmak için koşul olarak birden fazla ping'e sahip bir komut dosyası nasıl yazılır?

#!/bin/bash 
ping1=$(192.168.2.15) 
ping2=$(192.168.2.15) 
ping3=$(192.168.2.21) 

if [ $ping1 = OK ] && [ $ping2 = OK ] && [ $ping3 = failure ] 
then run_command 
elif [ ping1 = OK ] && [ ping2 = OK ] && [ ping3 = OK ] 
then echo 'machine 3 already running' 
fi 

ben i [] yazmak için ne var bilmiyorum çünkü, sözdizimi kötü olduğunu biliyorum?

cevap

3

Kabuk komutlarının $? tarafından erişilebilen bir dönüş durumu vardır, ping başarılı olursa 0 döndürür ve bunun yerine başka bir şey varsa, bunun için de test edebiliriz.

-c 1 için ping söyleyecektir
ping -c 1 192.168.2.15; ping1=$? 
ping -c 1 192.168.2.17; ping2=$? 
ping -c 1 192.168.2.21; ping3=$? 

tek isteği göndermek:

Biz statü bu şekilde alabilirsiniz.

Sonra sayısal karşılaştırma kullanarak değerleri test edebilirsiniz:

if ping1 && ping2 then 
    if ping3 then 

    else #(if ! ping3) 

    fi 
fi 
: Bu arada

if [ $ping1 -eq 0 ] && [ $ping2 -eq 0 ] && [ $ping3 -ne 0 ] 

, bu forma testlerinizi faktör olacaktır

İlgili konular