इस उपयोग के मामले में xargs प्रति पंक्ति एक कमांड क्यों नहीं चला रहा है?


0

मेरा समग्र कार्य मेरे द्वारा किए जाने वाले प्रत्येक EC2 सर्वर को पिंग करना है।

मैं इस आदेश का उपयोग कर रहा हूं कि:

netstat -W | grep ec2 | cut -d " " -f 18 | sort -u | cut -d "." -f 1,2,3,4 | xargs -0 -p "ping -c 10"

यह सही आउटपुट देता है, लेकिन xargsप्रति पंक्ति कॉल नहीं कर रहा है :

ping -c 10 ec2-107-20-154-211.compute-1.amazonaws.com
ec2-107-20-169-186.compute-1.amazonaws.com
ec2-13-58-191-91.us-east-2.compute.amazonaws
ec2-18-204-248-223.compute-1.amazonaws.com
ec2-18-207-50-150.compute-1.amazonaws.com
ec2-18-234-32-173.compute-1.amazonaws.com
ec2-34-192-54-86.compute-1.amazonaws.com
ec2-34-195-196-96.compute-1.amazonaws.com
ec2-34-206-216-146.compute-1.amazonaws.com
?...^C

प्रत्येक चरण की लिखित व्याख्या है:

  1. -Wपूरा FQDNs प्राप्त करने के लिए ध्वज के साथ netstat चलाएं और छोटे होस्टनाम नहीं
  2. grep ec2 के लिए
  3. cut आउटपुट केवल होस्टनाम कॉलम पाने के लिए
  4. sort अद्वितीय होस्टनाम
  5. cuthostname फिर से पोर्टनंबर को ड्रॉप करने के लिए जैसे ec2-1-2-3.amazon.com.80->ec2-1-2-3.amazon.com
  6. xargspingदस बार प्रत्येक मेजबान के लिए उत्पादन

मुझे लगता है कि मैं ओएस एक्स संस्करण के साथ या तो एक मुद्दे पर चल रहा हूं xargsक्योंकि एक ही आउटपुट को wc -lआठ पंक्तियों को दिखाता है:

netstat -W | grep ec2 | cut -d " " -f 18 | sort -u | cut -d "." -f 1,2,3,4 | wc -l
       8

मैं यहाँ xargs पहलू पर ध्यान केंद्रित कर रहा हूँ। यह इस कार्य का एकमात्र हिस्सा है जो स्पष्ट रूप से काम नहीं कर रहा है।

जवाबों:


1

मैंने इसे स्वयं हल किया:

netstat -W | grep ec2 | cut -d " " -f 18 | sort -u | cut -d "." -f 1,2,3,4 | xargs -p -L 1 ping -c 10

यह pingपाया गया प्रत्येक मेजबान के लिए अपेक्षित आठ कॉल प्रदान करता है।

मुझे लगता है कि यह समाधान काम करता है क्योंकि -Lध्वज इसे प्रति पंक्ति एक पंक्ति तक सीमित करता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.