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


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.