2013-01-21 31 views
5

मेरे पास "ips" नाम की एक फ़ाइल है जिसमें सभी ips हैं जिन्हें मुझे पिंग करने की आवश्यकता है। आदेश उन IP पिंग करने में, मैं निम्नलिखित कोड का उपयोग करें:फ़ाइल में प्रत्येक आईपी को पिंग कैसे करें?

cat ips|xargs ping -c 2 

लेकिन सांत्वना मुझे पिंग का उपयोग दिखाते हैं, मैं कैसे सही ढंग से यह करने के लिए पता नहीं है। मैं मैक ओएस

+0

यह मेरे यूबंटू 12.04 – arutaku

+0

@arutaku में काम करता है, मै मैक ओएस – user1687717

+0

का उपयोग कर रहा हूं तो फिर "लिनक्स" टैग का उपयोग न करें। –

उत्तर

12

आप xargs साथ विकल्प -n1 उपयोग करने के लिए पारित करने के लिए की जरूरत है

$ cat ips | xargs -n1 ping -c 2 

डेमो::

के रूप में समय में एक आईपी एकाधिक आईपी का समर्थन नहीं करता
$ cat ips 
127.0.0.1 
google.com 
bbc.co.uk 

$ cat ips | xargs echo ping -c 2 
ping -c 2 127.0.0.1 google.com bbc.co.uk 

$ cat ips | xargs -n1 echo ping -c 2 
ping -c 2 127.0.0.1 
ping -c 2 google.com 
ping -c 2 bbc.co.uk 

# Drop the UUOC and redirect the input 
$ xargs -n1 echo ping -c 2 < ips 
ping -c 2 127.0.0.1 
ping -c 2 google.com 
ping -c 2 bbc.co.uk 
+1

आप बिल्कुल सही हैं, धन्यवाद – user1687717

2

उपयोग कर रहा हूँ आईपी या होस्टनाम के साथ ips फ़ाइल की प्रत्येक पंक्ति में:

(while read ip; do ping -c 2 $ip; done) < ips 

तुम भी -W ध्वज के साथ, समय समाप्ति को बदल सकते हैं, इसलिए यदि कुछ मेजबान isn'up, यह अभ्यस्त ताला अपने बहुत अधिक समय के लिए लिपि। इसके अलावा -q शांत उत्पादन के लिए इस मामले में उपयोगी है।

(while read ip; do ping -c1 -W1 -q $ip; done) < ips 
1

फ़ाइल में प्रति पंक्ति 1 आईपी (और यह बहुत ज्यादा बड़ी नहीं है) है, तो आप पाश के लिए एक साथ यह कर सकते हैं:

for ip in $(cat ips); do 
    ping -c 2 $ip; 
done 
0

यह करके देखें:

cat ips | xargs -i% ping -c 2 % 
1

आप fping इस्तेमाल कर सकते हैं। यह भी करता है समानांतर में है कि और स्क्रिप्ट अनुकूल उत्पादन है।

$ cat ips | xargs fping -q -C 3 
    10.xx.xx.xx : 201.39 203.62 200.77 
    10.xx.xx.xx : 288.10 287.25 288.02 
    10.xx.xx.xx : 187.62 187.86 188.69 
    ... 
1

जीएनयू के साथ समानांतर आप क्या करेंगे: के रूप में आप ips या प्रक्रियाओं है

parallel -j0 ping -c 2 {} :::: ips 

यह समानांतर में के रूप में कई नौकरियों चलेंगे।

यह भी सुनिश्चित करें कि विभिन्न नौकरियों से उत्पादन एक साथ मिश्रित नहीं कर रहे हैं, में आता है तो तुम उत्पादन आप गारंटी है कि आप दो अलग नौकरियों से आधा लाइन नहीं मिलेगा का उपयोग करें।

जीएनयू समानांतर एक सामान्य parallelizer है और बनाता है एक ही मशीन पर या एक से अधिक मशीनों पर आप के लिए ssh उपयोग कर सकते है समानांतर में नौकरियों को चलाने के लिए आसान है।

Simple scheduling

जीएनयू समानांतर बजाय एक नई प्रक्रिया जब spawns:

आप 32 विभिन्न नौकरियों आप 4 सीपीयू पर चलाना चाहते हैं, तो parallelize करने के लिए एक सीधे आगे रास्ता प्रत्येक CPU पर 8 नौकरियों को चलाने के लिए है एक खत्म - सीपीयू सक्रिय रखने और समय इस प्रकार की बचत:

GNU Parallel scheduling

स्थापना

जीएनयू समानांतर आपके वितरण के लिए पैक नहीं है, तो आप एक व्यक्तिगत स्थापना, जो रूट पहुँच की आवश्यकता नहीं है कर सकते हैं।यह 10 सेकंड में ऐसा करके किया जा सकता है:

(wget -O - pi.dk/3 || curl pi.dk/3/ || fetch -o - http://pi.dk/3) | bash 

के लिए अन्य स्थापना विकल्पों को देखने के http://git.savannah.gnu.org/cgit/parallel.git/tree/README

जानें

अधिक उदाहरण देखें: http://www.gnu.org/software/parallel/man.html

घड़ी परिचय वीडियो: https://www.youtube.com/playlist?list=PL284C9FF2488BC6D1

टी के माध्यम से चलना वह ट्यूटोरियल: http://www.gnu.org/software/parallel/parallel_tutorial.html

साइन अप करें ईमेल सूची के लिए समर्थन प्राप्त करने के: https://lists.gnu.org/mailman/listinfo/parallel

0

@Lupus ने सुझाव दिया के रूप में आप "fping" का उपयोग कर सकते हैं, लेकिन उत्पादन अनुकूल मानव नहीं है - यह अपनी स्क्रीन के बाहर स्क्रॉल करेगा कुछ सेकंड में आपको क्या पता चल रहा है के बारे में कोई निशान नहीं है। इसे संबोधित करने के लिए मैंने अभी पिंग-एक्सरे जारी किया है। मैंने इसे एसीआई टर्मिनल के तहत जितना संभव हो उतना दृश्य बनाने की कोशिश की और यह सभी लक्ष्यों के लिए सटीक मिलीसेकंद रिज़ॉल्यूशन के साथ सीएसवी लॉग बनाता है।

https://dimon.ca/ping-xray/ enter image description here

आशा है कि आप इसे उपयोगी मिल जाएगा।