लूप के लिए एक रोक स्थिति के रूप में विलंबता का उपयोग करके आईपी को पिंग करने के लिए ओएस एक्स के टर्मिनल का उपयोग कैसे करें?


1

मैं क्या करना चाहूंगा, आईपी को पिंग करना है जबकि विलंबता एक विशिष्ट मूल्य से ऊपर है। मुझे लगता है कि एक उदाहरण से मदद मिलेगी:

मान लें कि मेरे पास "ping *IP here*"कमांड के लिए निम्नलिखित परिणाम हैं :

PING *IP here* (*IP here*): 56 data bytes
64 bytes from *IP here*: icmp_seq=0 ttl=53 time=127.238 ms
64 bytes from *IP here*: icmp_seq=1 ttl=53 time=312.762 ms
64 bytes from *IP here*: icmp_seq=2 ttl=53 time=251.475 ms
64 bytes from *IP here*: icmp_seq=3 ttl=53 time=21.174 ms
64 bytes from *IP here*: icmp_seq=4 ttl=53 time=27.953 ms

मैं दिए गए मान के नीचे विलंबता ड्रॉप के बाद पिंग स्टॉप बनाने का एक तरीका चाहूंगा। मान लें कि 100, इसलिए ऊपर दिए गए उदाहरण में यह 4 वें परिणाम के बाद बंद हो जाएगा।

जवाबों:


1

मुझे लगता है कि आसान तरीका हो सकता है, लेकिन यह मेरे लिए काम करता है:

#!/bin/bash

TRESHOLD=10

while $(true); do 

    time=$(ping -c 1 google.com | grep time | cut -d ' ' -f 7 | cut -d '=' -f 2 | cut -d '.' -f 1) 

    if [ $time -lt $TRESHOLD ]; then
        echo "Less than $TRESHOLD ($time), continue"
        sleep 1
    else
        echo "More than $TRESHOLD ($time), stop"
        exit
    fi

done

आउटपुट:

~ $ ./1.sh
Less than 10 (8), continue
Less than 10 (9), continue
Less than 10 (9), continue
Less than 10 (9), continue
Less than 10 (9), continue
More than 10 (11), stop
~ $

मैं 'पर काटता था।' फ्लश का पूरा हिस्सा पाने के लिए क्योंकि बैश फ्लोट्स नहीं करता है, केवल पूर्णांक: / - आपको इसका मूल्यांकन करने के लिए sed / awk या bc का उपयोग करने की आवश्यकता होगी
— Marek Bettman

आह, बस एहसास हुआ, आप स्क्रिप्ट को रोकना चाहते हैं कि समय TRESHOLD से कम है, बस '-T $ TRESHOLD' को '-Gt TRESHOLD' में बदलें और "कम" <-> "अधिक" उचित रूप से बदलें।
— मारेक बेटमैन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.