सवाल मैं पिंग कमांड के साथ एक छोटा टाइमआउट कैसे सेट कर सकता हूं?


मैं एक स्क्रिप्ट लिखने की कोशिश कर रहा हूं जो मेरे लैन पर सभी मेजबान सूचीबद्ध करता है (उनमें से लगभग 20) और प्रत्येक मेजबान के बगल में पिंग स्थिति लिखते हैं। मेरे पास DHCP पट्टे फ़ाइल है, इसलिए मेरे पास सभी आईपी हैं (कहें, 10.0.0.1, 10.0.0.2, आदि), मुझे बस प्रत्येक होस्ट के लिए पिंग स्थिति की आवश्यकता है।

इसलिए, मेरी लिपि प्रत्येक होस्ट के लिए एक सिंगल पिंग लॉन्च करती है:

ping -c 1 10.0.0.1

दुर्भाग्यवश, जब कोई होस्ट ऑफलाइन होता है, तो पिंग टाइमआउट में लंबा समय लगता है। मैंने जाँचा man ping, टाइमआउट देरी सेट करने के लिए दो विकल्प प्रतीत होते हैं: -w deadline तथा -W timeout। मुझे लगता है कि मुझे बाद में दिलचस्पी है।

तो मैंने यह कोशिश की:

ping -c 1 -W 1 10.0.0.1

लेकिन ऑफ़लाइन मेजबान प्रति सेकंड एक सेकंड प्रतीक्षा करना अभी भी बहुत लंबा है। मैंने इसे एक सेकंड से नीचे सेट करने का प्रयास किया, लेकिन ऐसा लगता है कि पैरामीटर को खाते में बिल्कुल नहीं लगता है:

ping -c 1 -W 0.1 10.0.0.1  # timeout option is ignored, apparently

क्या कम समय पर टाइमआउट सेट करने का कोई तरीका है? यदि नहीं, तो क्या कोई विकल्प हैं?

संपादित करें

  • ओएस डेबियन लेनी है।
  • जिन मेजबानों को मैं पिंग करने की कोशिश कर रहा हूं वे वास्तव में पहुंच बिंदु हैं। वे उपयोगकर्ताओं के समान वलान और सबनेट पर हैं (तैनाती और प्रतिस्थापन की सादगी के लिए)। यही कारण है कि मैं सभी सबनेट स्कैन नहीं करना चाहता (ए के साथ ping -b उदाहरण के लिए)।

# 2 संपादित करें

मैंने स्वीकार किया fping समाधान (अन्य सभी उत्तरों के लिए धन्यवाद)। यह आदेश वही करता है जो मैं ढूंढ रहा था:

fping -c1 -t500 10.0.0.1 10.0.0.2 10.0.0.3 10.0.0.4

यह आदेश पूरा करने के लिए अधिकतम 500ms लेता है, और मुझे सभी होस्टों की पिंग स्थिति एक बार में देता है:

10.0.0.1 : [0], 84 bytes, 5.71 ms (5.71 avg, 0% loss)
10.0.0.2 : [0], 84 bytes, 7.95 ms (7.95 avg, 0% loss)
10.0.0.3 : [0], 84 bytes, 16.1 ms (16.1 avg, 0% loss)
10.0.0.4 : [0], 84 bytes, 48.0 ms (48.0 avg, 0% loss)

10.0.0.1 : xmt/rcv/%loss = 1/1/0%, min/avg/max = 5.71/5.71/5.71
10.0.0.2 : xmt/rcv/%loss = 1/1/0%, min/avg/max = 7.95/7.95/7.95
10.0.0.3 : xmt/rcv/%loss = 1/1/0%, min/avg/max = 16.1/16.1/16.1
10.0.0.4 : xmt/rcv/%loss = 1/1/0%, min/avg/max = 48.0/48.0/48.0

डेबियन लेनी पर, स्थापना छोटी है:

aptitude update
aptitude install fping

39
2017-11-10 19:13


मूल




जवाब:


fping आप जिस स्टॉक पिंग का उपयोग कर रहे हैं उससे बेहतर उपकरण हो सकता है। आप किस ओएस पर हैं?

  • "फिंगिंग पिंग से अलग है जिसमें आप कमांड लाइन पर किसी भी लक्ष्य को निर्दिष्ट कर सकते हैं, या फ़ाइल को निर्दिष्ट करने के लिए लक्ष्य की सूचियों वाली सूची निर्दिष्ट कर सकते हैं।"
  • "एक लक्ष्य को भेजने या जवाब देने तक इसके बजाय, फिंग एक पिंग पैकेट भेज देगा और राउंड-रॉबिन फैशन में अगले लक्ष्य पर चलेगा।"
  • "पिंग के विपरीत, फिंगिंग स्क्रिप्ट में उपयोग करने के लिए है, इसलिए इसका आउटपुट पार्स करना आसान है।"

38
2017-11-10 19:53



बहुत अच्छा काम करता है, धन्यवाद, यही वह है जिसे मैं ढूंढ रहा था। यह आदेश नौकरी ठीक करता है: fping -c1 -t500 10.0.0.1 10.0.0.2 10.0.0.3 ... पूरी बात आधे सेकेंड तक चलती है, और मुझे एक ही समय में सभी होस्टों के परिणाम मिलते हैं। उत्कृष्ट उपकरण :-)) - MiniQuark


उन लोगों के लिए जो समाधान ढूंढ रहे हैं ping, उपयोग -i स्विच।

ping -i 0.2 www.google.com

या, यदि आप 0.1 का उपयोग करना चाहते हैं, तो आपको इसे रूट के रूप में चलाने की आवश्यकता होगी

sudo ping -i 0.1 www.google.com

अतिरिक्त उपयोगिताओं को डाउनलोड करने की आवश्यकता नहीं है।


33
2017-08-15 20:17



मुझसे +1 "पिंग टाइमआउट" googling जब यह पहला परिणाम है, और यह वही है जो मैं देख रहा था। - Steven Jeffries
@StevenJeffries यहाँ वही! - Luc
यदि आपके पास एक नया संस्करण है timeout, तुम कर सकते हो timeout 0.1 ping -c 1 ${hostname}। के पुराने संस्करण timeout कमांड केवल सकारात्मक पूर्णांक टाइमआउट मानों का समर्थन करता है। - Trevor Boyd Smith
मैंने अभी देखा है कि आगे नीचे है @jordonbedwell द्वारा एक समाधान यह मेरी टिप्पणी के लिए कार्यात्मक रूप से वही है। जब मैंने अपनी टिप्पणी पोस्ट की तो मैंने नहीं देखा @jordonwedwell द्वारा समाधान। - Trevor Boyd Smith
मृत मेजबान के मामले में यह समाधान लगभग 1 सेकंड के बाद अपना पहला उपयोगी आउटपुट प्रिंट करेगा। यह निश्चित रूप से गलत जवाब है क्योंकि @ मार्सेलबर्कहार्ड ने पहले से ही उल्लेख किया है। - Victor Yarema


आप के साथ एक छोटा टाइमआउट सेट कर सकते हैं timeout उबंटू / डेबियन पर आदेश:

timeout 0.2 ping -c1 fqdn || { do_work }

15
2017-11-04 18:48



अच्छा उत्तर! मैंने अब किया: टाइमआउट 1 पिंग-सी 1 test.com - vrijdenker
टाइमआउट का मेरा संस्करण केवल 1 सेकंड स्वीकार करता है। timeout (GNU coreutils) 8.4। - slm
मुझे यह समाधान पसंद है, इसे अन्य सभी आदेशों पर लागू किया जा सकता है - datdinhquoc
@ एसएलएम, यह अजीब बात है कि आपका संस्करण एक सेकंड से भी कम का समर्थन नहीं करता है। इससे मेरा काम बनता है: DURATION is a floating point number with an optional suffix: 's' for seconds (the default),... मेरे मामले में man timeout रिपोर्ट GNU coreutils 8.26। बीडब्ल्यूटी, मैं उबंटू 17.04 का उपयोग कर रहा हूं। - Victor Yarema


मैं इस काम के लिए एनएमएपी का उपयोग करूँगा।

nmap -sP --max-retries=1 --host-timeout=1500ms 10.0.0.1

देखें एनएमएपी दस्तावेज़ीकरण इस पर अधिक जानकारी के लिए।


12
2017-11-10 20:05



अच्छा कॉल .. यह करने के लिए यह "बहुत बढ़िया" तरीका है: डी +1 - Arenstar
हाय, मैंने अभी यह कोशिश की है, लेकिन मुझे निम्न त्रुटि संदेश मिला है: "- होस्ट-टाइमआउट मिलीसेकंड में निर्दिष्ट है जब तक कि आप इसे 'एस', 'एम', 'एच', या 'डी' जोड़कर अर्हता प्राप्त नहीं करते। मूल्य 1500 मिलीसेकंड से अधिक होना चाहिए "। - MiniQuark
मुझे लगता है कि समस्या स्पष्ट है, टाइमआउट 1500ms से छोटा नहीं हो सकता है। मुझे लगता है कि समानांतरता का पालन करने वाले एनएमएपी विकल्पों की तुलना में आपको देखना चाहिए। - pacey
ऐसा लगता है कि केवल एक अनुरोध भेजता है। मैं निरंतर गलती का पता लगाने की तलाश में हूं, मैं यहां "पिंग मिलीसेकंड टाइमआउट" गूगलिंग द्वारा मिला हूं, क्या एनएमएपी उबंटू पिंग की तरह इंफिन-पिंग्स प्रदान करता है? - ThorSummoner
एक सेकंड से कम समय के लिए टाइमआउट सेट करने में एक विजेता उपयोगकर्ता का उपयोग @ विजेता-बीजेल्कोहोम उत्तर में शामिल होगा - thrau


यदि आप अपने सभी मेजबान भौतिक लैन पर हैं तो आप एआरपी पिंग टूल को देखना चाह सकते हैं। यह वही काम करता है लेकिन 'पिंग' करने के लिए लेयर 2 एआरपी पैकेट का उपयोग करता है। विफलता क्या है, इकट्ठा करने के लिए आप arpping और icmp पिंग, या वास्तव में टीसीपी पिंग के संयोजन का उपयोग कर सकते हैं। उदाहरण एक टीसीपी स्टैक क्रैश है, हालांकि इन दिनों दुर्लभ है, हम पाते हैं कि मशीन टीसीपी स्टैक क्रैश हो गया था, क्योंकि मशीन पिंग का जवाब नहीं देगी, हालांकि यह एआरपी का जवाब देगी (जो होस्ट पर कोड का एक अलग टुकड़ा है) ।

arpping, tcpping, और icmp पिंग के संयोजन का उपयोग करके आप यह पता लगा सकते हैं कि मशीन पर सेवा क्रैश हो गई है, टीसीपी स्टैक क्रैश हो गया है, या मशीन पूरी तरह से बंद हो गई है। यदि आपने ईथरनेट स्विच प्रबंधित किए हैं तो आप भौतिक लिंक डेटा प्राप्त कर सकते हैं, यह बताते हुए कि मशीन वास्तव में स्विच की गई है या शारीरिक रूप से अनप्लग किया गया है। हमारे पास ऐसी स्थिति थी जहां मशीनों (सार्वजनिक कमरे में ग्राहकों) को बंद कर दिया जाएगा, हमने मशीनों को सशक्त बनाने के लिए डेटा और लैन पैकेट पर भेजे गए जाग को इकट्ठा किया। :-)

यदि आपका नेटवर्क व्यस्त है, तो आप जो भी समाधान तैयार करते हैं, किसी प्रकार के क्यूओ को कार्यान्वित करने के बारे में सोचें, ताकि आपके मॉनिटरिंग पैकेट नेटवर्क पर प्राथमिकता ले सकें, नेटवर्क की भीड़ के कारण मापन पैकेट खोने से झूठे अलार्म मिल सकते हैं। यदि पैकेट की निगरानी के लिए qos का उपयोग करें, तो आपको नेटवर्क उपयोग के बारे में डेटा एकत्र करने के बारे में सोचना होगा।

इसलिए, आप अपना निगरानी समाधान जटिल या जितना आसान हो उतना आसान बना सकते हैं। हमें लगता है कि सबसे प्राथमिक निगरानी प्रणाली भी सही दिशा में एक कदम है, कम से कम कुछ व्यवस्थापक मशीनों पर कोई नजर रखते हैं :-)।

सौभाग्य!


4
2017-11-11 10:29





@ जोर्डन-बेडवेल का एक अच्छा सुझाव है।

@ लैस्ज़लो-Valko https://stackoverflow.com/questions/20359487/why-does-ping-not-timeout-in-linux बताता है कि आईपी पते निर्धारित होने के बाद ही पिंग टाइमआउट शुरू होते हैं। यदि आप एक डीएनएस का उपयोग करते हैं और आपका वर्कस्टेशन ऑफलाइन है तो पिंग आईपी एड्रेस निर्धारित नहीं कर सकता है और ऐसा लगता है कि झूठी वापसी से पहले लगभग डिफ़ॉल्ट 20 + सेकंड इंतजार करना है।

डोमेन नाम के साथ पिंग चलाने पर लिनक्स 'टाइमआउट' टूल का उपयोग अधिक नियंत्रण प्रदान करता है।

धन्यवाद दोस्तों


3
2017-11-30 23:34





यदि आप सुरक्षा अलार्म ट्रिगर किए बिना अपने सबनेट (या इसका हिस्सा) स्कैन कर सकते हैं, और कुछ अतिरिक्त डेटा को ध्यान में रखें, गुस्से में आईपी स्कैनर तेज़, नि: शुल्क है, आपको स्थिति द्वारा क्रमबद्ध करने के लिए क्लिक करने देता है, और अधिक विस्तृत जानकारी प्रदान कर सकता है।


1
2017-11-10 19:45





उपयोग डब्ल्यू विंडोज और डेबियन दोनों पर स्विच करें।

यह जांचने का एक त्वरित तरीका है कि मशीन बिल्कुल जवाब देती है या नहीं, यह मानते हुए कि यह समय कम समय में निर्दिष्ट प्रतिक्रिया देगा।

ping -w 1 192.168.80.105

PING 192.168.80.105 (192.168.80.105) 56(84) bytes of data.

--- 192.168.80.105 ping statistics ---
2 packets transmitted, 0 received, 100% packet loss, time 999ms

1
2017-10-12 10:20





पृष्ठभूमि में लॉन्च पिंग क्यों नहीं, एक अस्थायी फ़ाइल के आउटपुट के साथ, प्रत्येक मेजबान के समानांतर में? फिर एक सेकंड के लिए सो जाओ, किसी भी पिंग प्रक्रियाओं को मार दें जो अभी भी चल रहे हैं, और आउटपुट एकत्र करने के लिए फ़ाइलों को पढ़ें।


0
2017-11-10 19:27



मुझे लगता है कि यह काम करेगा, लेकिन मैं एक आसान समाधान की तलाश में था। फिर भी धन्यवाद। - MiniQuark
यह विधि स्केल नहीं है। - Synetech


टाइमआउट एक पूर्णांक मान इंगित करता है कि पैकेट कितना लंबा और भेजा जा सकता है। 1 से नीचे मान अर्थहीन हैं। 1 का मान इंगित करता है कि आप केवल तत्काल पड़ोसियों को पिंग कर रहे हैं।

चीजों को गति देने का एकमात्र तरीका पृष्ठभूमि जांच चलाने और परिणामों को फसल करना है। यह नागोस जैसे उपकरण हैं।


0
2017-11-10 19:56



मुझे खेद है, लेकिन मुझे नहीं लगता कि यह सच है। मैन पेज बहुत स्पष्ट है कि -W "प्रतिक्रिया के लिए प्रतीक्षा करने का समय, सेकंड में" निर्दिष्ट करता है; यह आयामी नहीं है, और हालांकि पिंग 1 से नीचे मानों का सम्मान नहीं करता है (इसलिए सवाल) उप-सेकंड टाइमआउट अर्थहीन नहीं हैं। यदि आप मुझे माफ कर देंगे, तो आप भ्रमित हो सकते हैं-साथ-साथ, बाद में आईपी टीटीएल (हॉप गिनती) फ़ील्ड सेट कर रहा है, जो आपके जैसा वर्णन करता है, और जहां नीचे 1 मान वास्तव में व्यर्थ हैं। - MadHatter
-W वें समय है जब पिंग प्रक्रिया प्रतिक्रिया के लिए इंतजार कर रही है, और होप गिनती उच्च होने पर इसे हॉप गिनती के नीचे अच्छी तरह से सेट करने में समझदारी हो सकती है, जो सामान्यतः है। तीन सेकंड तक आप आमतौर पर पुनः प्रयास की स्थिति में हो रहे हैं। कुछ उपकरण इंतजार के लिए एक बेहतर अनाज वाले टाइमर के उपयोग की अनुमति दे सकते हैं, लेकिन पिंग के अधिकांश उपयोगों के लिए, सेकंड एक उचित इकाई हैं। - BillThor