ฉันจะ ping ที่อยู่ IP หลายรายการพร้อมกันได้อย่างไร


22

ฉันรู้วิธีการที่คุณสามารถใช้ Bash forloop และpingเซิร์ฟเวอร์หลายเครื่องมีเครื่องมือ Linux CLI ที่ฉันสามารถใช้ได้ซึ่งจะทำให้ฉันสามารถทำสิ่งนี้ได้โดยไม่ต้องใช้วิธีเขียนสคริปต์ Bash ไปยังpingรายการเซิร์ฟเวอร์ ทีละครั้ง?

บางสิ่งเช่นนี้

$ ping host1 host2 host3

หมายเหตุ:ฉันกำลังมองหา CentOS / Fedora โดยเฉพาะ แต่ถ้ามันใช้งานได้กับ distros อื่น ๆ ก็ใช้ได้เช่นกัน


8
ทำไมคุณถึงต่อต้านสคริปต์ตัวเล็ก ๆ ที่ทำเช่นนั้นความสวยงามและปรัชญาของ Linux ;-) (มีโปรแกรมขนาดเล็กที่เรียบง่ายและเขียนกาวสำหรับความต้องการพิเศษด้วยตนเอง)
ปีเตอร์ - Reinstate Monica

1
มันง่ายกว่ามากในการติดตั้งแพ็คเกจจาก repo vs. การคัดลอกสคริปต์ไปยัง 2000+ VMs 8-) ฉันสามารถเขียนโซลูชันสคริปต์สำหรับตัวเองได้อย่างง่ายดาย ตั้งแต่ฉันตอบตัวเองฉันกำลังสร้างเนื้อหาบนอินเทอร์เน็ตเนื่องจากฉันมีผู้ใช้ที่ขอ cmd เดียวกับเชลล์สคริปต์และไม่ประสบความสำเร็จในการค้นหา A'er ง่าย ๆ กับสิ่งที่พวกเขามองว่าเป็นคำถามพื้นฐาน
slm

3
หากความตั้งใจของคุณคือการทำมัลติปิงจาก 2000+ VMs ... ฉันยังคงเกาหัวได้เลย
Hagen von Eitzen

@HagenvonEitzen - ไม่ฉันกำลังติดตั้งเครื่องมือบน 2000+ VMs เพื่อให้ผู้ใช้มีเครื่องมือพร้อมให้ทำเช่นนั้น
slm

1
ทำไมคุณต้องการสิ่งนี้
Tvde1

คำตอบ:


32

หากคุณมองเข้าไปในโครงการ NMAPnmapคุณจะพบว่ามันมีเครื่องมือเพิ่มเติมที่ด้านบนของเพียง หนึ่งในเครื่องมือเหล่านี้คือnpingซึ่งมีความสามารถดังต่อไปนี้:

Nping มีอินเตอร์เฟสบรรทัดคำสั่งที่ยืดหยุ่นและทรงพลังมากซึ่งให้ผู้ใช้ควบคุมแพ็คเก็ตที่สร้างขึ้นได้อย่างเต็มที่ คุณสมบัติของ Nping รวมถึง:

  • การสร้างแพ็กเก็ต TCP, UDP, ICMP และ ARP แบบกำหนดเอง
  • สนับสนุนข้อกำหนดคุณสมบัติของโฮสต์เป้าหมายหลายรายการ
  • รองรับการกำหนดพอร์ตเป้าหมายได้หลายแบบ
  • ...

nping อยู่ใน repos EPEL มาตรฐานที่จะบูต

$ repoquery -qlf nmap.x86_64 | grep nping
/usr/bin/nping
/usr/share/man/man1/nping.1.gz

การใช้

ในการ ping เซิร์ฟเวอร์หลายเครื่องคุณเพียงแค่บอกnpingชื่อ / IP และโปรโตคอลที่คุณต้องการใช้ ที่นี่เนื่องจากเราต้องการเลียนแบบสิ่งที่pingCLI ดั้งเดิมทำเราจะใช้ ICMP

$ sudo nping -c 2 --icmp scanme.nmap.org google.com

Starting Nping 0.7.70 ( https://nmap.org/nping ) at 2019-06-14 13:43 EDT
SENT (0.0088s) ICMP [10.3.144.95 > 45.33.32.156 Echo request (type=8/code=0) id=42074 seq=1] IP [ttl=64 id=57921 iplen=28 ]
RCVD (0.0950s) ICMP [45.33.32.156 > 10.3.144.95 Echo reply (type=0/code=0) id=42074 seq=1] IP [ttl=46 id=24195 iplen=28 ]
SENT (1.0091s) ICMP [10.3.144.95 > 45.33.32.156 Echo request (type=8/code=0) id=42074 seq=2] IP [ttl=64 id=57921 iplen=28 ]
SENT (2.0105s) ICMP [10.3.144.95 > 45.33.32.156 Echo request (type=8/code=0) id=42074 seq=2] IP [ttl=64 id=57921 iplen=28 ]
RCVD (2.0107s) ICMP [45.33.32.156 > 10.3.144.95 Echo reply (type=0/code=0) id=42074 seq=2] IP [ttl=46 id=24465 iplen=28 ]
SENT (3.0138s) ICMP [10.3.144.95 > 64.233.177.100 Echo request (type=8/code=0) id=49169 seq=2] IP [ttl=64 id=57921 iplen=28 ]

Statistics for host scanme.nmap.org (45.33.32.156):
 |  Probes Sent: 2 | Rcvd: 2 | Lost: 0  (0.00%)
 |_ Max rtt: 86.053ms | Min rtt: 0.188ms | Avg rtt: 43.120ms
Statistics for host google.com (64.233.177.100):
 |  Probes Sent: 2 | Rcvd: 0 | Lost: 2  (100.00%)
 |_ Max rtt: N/A | Min rtt: N/A | Avg rtt: N/A
Raw packets sent: 4 (112B) | Rcvd: 2 (108B) | Lost: 2 (50.00%)
Nping done: 2 IP addresses pinged in 3.01 seconds

ข้อเสียเปรียบอย่างเดียวที่ฉันพบในเครื่องมือนี้คือการใช้โหมด ICMP ที่ต้องการสิทธิ์พิเศษ

$ nping -c 2 --icmp scanme.nmap.org google.com
Mode ICMP requires root privileges.

3
เอาท์พุทอะไร สถิติบอกว่ามันส่ง 2 ไปยังโฮสต์แต่ละแห่ง แต่ผลลัพธ์ก่อนหน้านี้แสดงว่ามันส่ง 3 ไปยัง scanme.nmap.org (45.33.32.156) และ 1 ถึง google.com (64.233.177.100) มันเกิดขึ้นกับฉันเช่นกันเมื่อฉันเรียกใช้
JoL

4
มันอยู่ ... (แน่นอนเพราะมันไม่สอดคล้องกับตัวเอง) ในการรันด้วย strace ฉันเห็นได้ว่ามันส่ง ping ไปที่ google.com แต่เอาท์พุทบรรทัดที่บอกว่ามันส่งไปที่ scanme.nmap.org ข้อผิดพลาดที่น่าสนใจ แม้ว่ามันจะไม่เกิดขึ้นเสมอไป
JoL

nmapนอกจากนี้ยังสนับสนุน ICMP -snโดยตรงจากตัวเลือกที่ระบุ ดูคำตอบของฉันสำหรับรายละเอียด
scai

@scai - ขอบคุณ A'er ของคุณ ฉันพบว่าหนึ่งเช่นกันในขณะที่การวิจัยนี้ ฉันพบว่าวิธีการของฉันสะอาดที่สุด
slm

1
'ข้อเสียเปรียบอย่างเดียวที่ฉันพบในเครื่องมือนี้คือการใช้โหมด ICMP ที่ต้องการสิทธิ์พิเศษ " ใช่นั่นเป็นสิ่งที่น่าสนใจ แต่มันเกี่ยวกับความสามารถ (ใน Linux อย่างน้อยคุณสามารถ setuid exec สำหรับรูท) ไม่ใช่ที่ฉันแนะนำให้ใช้ setcap หรือให้ setuid ....
Pryftan

18

fpingอยู่ในแพคเกจ Fedora ที่มีชื่อเดียวกันและอนุญาตสำหรับโฮสต์จำนวนมากหรือชุดของที่อยู่ IP

$ fping -a -A -c 1 hosta hostb
192.168.0.20 : xmt/rcv/%loss = 1/1/0%, min/avg/max = 0.64/0.64/0.64
192.168.1.3  : xmt/rcv/%loss = 1/1/0%, min/avg/max = 0.50/0.50/0.50

fping จะส่งแพ็กเก็ต ping ออกไปและไปยังเป้าหมายต่อไปในรูปแบบการปัดเศษ ... หากเป้าหมายตอบกลับจะมีการบันทึกและลบออกจากรายการ


9
oping host1 host2 host3

รายละเอียด:

oping ใช้แพ็คเกจ ICMP (รู้จักกันดีในชื่อ "ping packets") เพื่อทดสอบความสามารถในการเข้าถึงของโฮสต์เครือข่าย สนับสนุนการส่ง Ping ไปยังโฮสต์หลายเครื่องพร้อมกันโดยใช้ IPv4 และ / หรือ IPv6 อย่างโปร่งใส

แพคเกจนี้ประกอบด้วยแอปพลิเคชันบรรทัดคำสั่งสองรายการ: "oping" เป็นการแทนที่สำหรับเครื่องมือเช่น ping (1), ping6 (1) และ fping (1) "noping" เป็นเครื่องมือที่ใช้ ncurses ซึ่งจะแสดงสถิติในขณะที่กระตุกและไฮไลท์เวลาผิดปกติรอบการเดินทาง


เพียงแค่ต้องการอวดความรู้: เทคนิค ICMP สำหรับการรายงานข้อผิดพลาดโดยทั่วไปและมีความสามารถที่แตกต่างกันมากมาย ในความเป็นจริง ping ใช้ประเภท EMP ของ ECHO_REQUEST / ECHO_REPLY (8 สำหรับ iirc ในอดีต แต่มันใช้เวลานานมากและฉันก็ขี้เกียจเกินกว่าจะตรวจสอบ) บางทีคำอธิบายที่คุณอ้างนั้นเป็นของจริงสำหรับการเลือกเอง แต่ก็ไม่ถูกต้อง (หรือมากกว่านั้นง่ายกว่าที่ควรจะเป็น ... หรืออาจจะไม่ใช่ฉันเดาว่าหลายคนคงจะดีกว่า แต่ไม่ใช่สำหรับฉัน )
Pryftan


6

ฉันรู้ว่าไม่ใช่สิ่งที่คุณต้องการโดยเฉพาะแต่เป็นสคริปต์ทุบตีเพื่อทำสิ่งนี้:

#!/bin/bash

for host; do
    ping -c5 "$host" 2>&1 | tail -3 &
done

wait

สิ่งนี้จะนำจุดปลายของคุณไปเป็นอาร์กิวเมนต์บรรทัดคำสั่งและส่ง 5 ping ให้กับแต่ละรายการเป็นกระบวนการพื้นหลังจากนั้นรอให้ทุกคนเสร็จสิ้นก่อนที่จะออก มันจะพิมพ์สามบรรทัดสุดท้ายของเอาต์พุต ping ซึ่งมีสถิติที่มีประโยชน์เกี่ยวกับอัตราความสำเร็จและเวลาแฝง


3
คุณไม่จำเป็นต้องจำรหัส วิwaitจะรอกระบวนการลูกที่ใช้งานอยู่ทั้งหมดเพื่อให้คุณสามารถหลีกเลี่ยงการวนซ้ำที่สอง ฉันคิดว่าส่วนหนึ่งของเหตุผลที่ถูกขอให้ไม่ต้องเขียนสคริปต์ทุบตีคือการมีวิธีแก้ปัญหาที่ทำงานบนเครื่องใด ๆ โดยไม่ต้องพกพาหรือเขียนสคริปต์ ทำให้สั้นน่าดูดีขึ้นดังนั้นฉันคิดว่ามันจะดีกว่าที่จะหลีกเลี่ยงการกำหนดอาร์กิวเมนต์และทำfor host; doในวงแรกของคุณ หากครั้งนี้มี zsh คุณสามารถหลีกเลี่ยงdoและdoneและเพียงแค่ทำ interatively:for host in google.com; ping -c5 "$host" |& tail -3 & wait
Jol

4
แทร็บ SIGINT จะทำให้สคริปต์นี้ใช้งานได้จริงมากขึ้น
Gilles 'หยุดความชั่วร้าย' ใน

2
สำหรับการใช้งานแบบโต้ตอบนี้เป็นเพียงการใช้คำสั่งพื้นหลัง (คือcommand &) ใน subshell (เช่นห่อด้วย parens) และwaitจะรวมจำนวนของคำสั่งใด ๆ (for f in google.com yahoo.com microsoft.com; do ping $f & done; wait)ที่เป็นคำสั่งเทียมหนึ่งตัวอย่างเช่น: เอาต์พุตของพวกเขาจะถูกอินเตอร์ลีฟและเมื่อคุณ ctrl + c นี่หลังจากคำสั่งนี้กระบวนการลูกทั้งสามจะถูกฆ่า เชลล์มีโครงสร้างงานควบคุมที่ทรงพลังมากมายและนี่เป็นหนึ่งในนั้น
โกหก Ryan

2
ขอบคุณทุกคน ใช่ฉันลังเลที่จะโพสต์ แต่ฉันคิดว่า Q / A ของที่นี่ไม่เพียง แต่สำหรับ OP แต่สำหรับทุกคนประสบปัญหาที่คล้ายกันและฉันคิดว่าจะมีคนที่สะดุดข้ามคำถามนี้และไม่ต้องการติดตั้งซอฟต์แวร์เพิ่มเติม เพื่อให้งานสำเร็จ
Jesse_b

@JoL แต่แน่นอนว่าเครื่องมือเหล่านั้นจะไม่ได้รับการติดตั้งโดยค่าเริ่มต้นในโฮสต์ทั้งหมด แต่นั่นไม่ได้ทำให้สิ่งที่คุณพูดไม่จริงแน่นอน แต่ ...
Pryftan

2

ฉันคิดว่าสิ่งนี้สามารถทำเพื่อคุณ?

eval $(printf 'ping "%s" & ' host1 host2 host3)

มันใช้ประโยชน์จากprintfความสามารถในการ "ทำให้ซ้ำอัตโนมัติ" ข้อโต้แย้งของมันในขณะที่ใช้สตริงรูปแบบของมันมากกว่าแต่ละอาร์กิวเมนต์ printfดังนั้นข้างต้นจะสร้างลำดับของping <hostname> &สตริงสำหรับแต่ละโฮสต์ที่จัดไว้ให้เป็นอาร์กิวเมนต์และดึงข้อมูลลำดับของคำสั่งดังกล่าวผ่านการทดแทนevalคำสั่งไปยังคำสั่งเพื่อให้พวกเขาดำเนินการทันที

printfและevalคำสั่งเป็นมาตรฐาน POSIX เช่นเดียวกับการทดแทนคำสั่ง

ล้อมรอบคำสั่งดังกล่าวทั้งหมดใน subshell ประกอบด้วยและ -ed waitเช่นนี้:

(eval $(printf 'ping "%s" & ' host1 host2 host3) && wait)

Ctrl+Cให้ความสามารถในทุกอย่างที่จะขัดจังหวะด้วยง่าย

มิฉะนั้นคุณสามารถควบคุมแต่ละpingคำสั่งอย่างแปลกประหลาดผ่านการควบคุมงานตามปกติของเชลล์

หากเชลล์ของคุณรองรับการทดแทนกระบวนการด้วยคุณอาจใช้สิ่งต่อไปนี้:

. <(printf 'ping "%s" & ' host1 host2 host3)

เพื่อให้พิมพ์ได้ไม่กี่ตัวอักษร

ส่วนสำคัญเป็นเช่นเดียวกับสำหรับevalแต่ฟีดลำดับของpings ไปยังคำสั่ง.(aka source) ผ่านการทดแทนกระบวนการ


2

Nmapรองรับการสแกน ping (ICMP) และโฮสต์จำนวนมาก:

nmap -sn -n 127.0.0.1 8.8.8.8

นอกจากนี้คุณยังสามารถสร้างไฟล์ที่มี IP ทั้งหมดเป้าหมายของคุณ (คั่นด้วยช่องว่างหรือการขึ้นบรรทัดใหม่) targets.txtที่เรียกว่า จากนั้นเรียกใช้:

nmap -sn -n -iL targets.txt

ตัวเลือกอธิบาย:

  • -sn ปิงสแกน
  • -n ปิดใช้งานการแก้ไข DNS
  • -iL ชื่อไฟล์อินพุต

ตัวเลือกที่น่าสนใจอื่น ๆ ในกรณีที่คุณต้องการ ping เป้าหมายจำนวนมากจริงๆ:

  • -T4 เพิ่มเวลาเพื่อลดระยะเวลาสแกน
  • --min-parallelism 100 เพิ่มจำนวนโพรบแบบขนาน
  • -oG <file> เขียนผลลัพธ์การสแกนไปยังไฟล์ในรูปแบบ Grepable

โดยไม่ต้องสร้างไฟล์

โปรดทราบว่าคุณยังสามารถละทิ้งการสร้างไฟล์และใช้ a -เพื่อรับอินพุตจาก|ไพพ์หรือผ่านวิธีดั้งเดิมสำหรับการเปลี่ยนทิศทางเอาต์พุตผ่าน STDIN

ตัวอย่าง:

$ ( echo www.google.com; echo www.yahoo.com ) | sudo nmap -sn -n -iL -

-หรือ-

$ sudo nmap -sn -n -iL - < <(echo www.google.com; echo www.yahoo.com)

-หรือ-

$ sudo nmap -sn -n -iL - <<< $'www.google.com\nwww.yahoo.com'

อ้างอิง


2

โดยใช้xargsคำสั่งทั่วไปเพื่อสร้างการดำเนินการหลายpingคำขอ:

echo host1 host2 host3 | xargs -n1 -P0 ping -c 4

โดยที่host1 host2 host3สามารถเป็นจำนวนตัวแปรของโฮสต์ (การรวมกันของ IP หรือชื่อโฮสต์)

สิ่งนี้จะแก้ไขxargsค่าเริ่มต้นเพื่อบังคับให้มีอาร์กิวเมนต์ 1 อินพุตต่อการดำเนินการ ping และอนุญาตให้กระบวนการลูกแบบขนานไม่ จำกัด จำนวน (1 ต่อการ pinged โฮสต์) อาจเป็นการดีที่จะตั้งค่า-P(aka --max-procs) เป็นค่าที่มีสติถ้าตั้งใจจะ ping โฮสต์จำนวนมาก (พวกมันทั้งหมดจะถูกประมวลผล

พอสั้นใช้โดยตรงอาจจะเพิ่มเป็นฟังก์ชั่นให้รายละเอียดเปลือกของคุณหรือแฟ้ม rc หรือกลายเป็นสคริปต์เล็ก ๆ $PATHในของคุณ ในตัวอย่างด้านล่าง-Pได้รับการตั้งค่าเป็น 10 เพื่อหลีกเลี่ยงการใช้ทรัพยากรมากเกินไป

สคริปต์ตัวอย่าง: /usr/bin/mping

#!/bin/sh

echo $@ | xargs -n1 -P10 ping -c4

ฟังก์ชั่นตัวอย่างภายใน ~/.bashrc

function mping() {
    echo $@ | xargs -n1 -P10 ping -c4
} 

และใช้เป็น:

mping host1 host2 host3 ...

1
คุณอาจพิจารณาใช้ -w 2 เพื่อรอการ ping ไม่เกิน 2 วินาที ค่าเริ่มต้นคือ 10 วินาทีซึ่งเป็นค่าต่อการ ping ดังนั้นการดำเนินการนี้อาจใช้เวลามากกว่า 30 วินาที
Criggie

1
ใช่ว่าเป็นความคิดที่ดีถ้ากระตุกเจ้าภาพมากกว่าที่คุณตั้งไว้สำหรับ/--max-procs -Pอย่างไรก็ตามสำหรับโฮสต์มีจำนวนน้อยกว่า-Pการปิงทั้งหมดจะถูกดำเนินการแบบขนาน - ซึ่งหมายความว่ามันจะใช้เวลานานเท่ากับการดำเนินการ ping ที่ยาวที่สุดเพียงครั้งเดียวแทนที่จะรวมกันทั้งหมด
Jason Musgrove

1

ฉันไม่รู้ว่าคุณต้องการอะไร แต่คุณสามารถเปลี่ยน 8 บิตสุดท้ายเป็นทศนิยม 255 ดังนั้นโฮสต์ของคุณจะได้รับการออกอากาศจริง ๆ แล้วมันจะส่งแพ็กเก็ต ping ไปยังอุปกรณ์ทั้งหมดที่มีอยู่ในเครือข่าย

ping -c 1 xx.xx.xx.255

1
นั่นไม่ใช่สิ่งที่ฉันกำลังมองหา
slm

8
ยินดีต้อนรับสู่เว็บไซต์ - นี่เป็นความคิดที่ดีและแสดงความเข้าใจใน Broadcast IP และวัตถุประสงค์ในเครือข่าย IP และถูกต้องสมบูรณ์ อย่างไรก็ตามมันไม่ตรงกับข้อกำหนดเฉพาะของ OP ในกรณีที่กำหนดแคบ ๆ นี้ กรุณาดำเนินการต่อไปและมีรอยแตกที่ตอบคำถามอื่น ๆ
Criggie

0
ping google.com && ping localhost

เอาท์พุต

Pinging google.com [xxxxxxx] with 32 bytes of data:
Reply from xxxxxxx: bytes=32 time=210ms TTL=49
Reply from ::1: time<1ms
Reply from xxxxxxx: bytes=32 time=212ms TTL=49
Reply from ::1: time<1ms
Reply from xxxxxxx: bytes=32 time=211ms TTL=49
Reply from ::1: time<1ms

ข้อเสียของสิ่งนี้คือ 1) &&ตัวดำเนินการที่อนุญาตให้คำสั่งที่สองเท่านั้นที่เรียกใช้ถ้าคำสั่งแรกเสร็จสมบูรณ์เรียบร้อยแล้ว (เช่นรหัสการออกจาก 0) และ 2) การ ping แรกจะไม่สิ้นสุดโดยไม่มี ^ C เพื่อขัดจังหวะ ลองเพิ่มพารามิเตอร์ -c และ a -w ยินดีต้อนรับสู่เว็บไซต์!
Criggie

-1

เพื่อความสนุกสนานและผลกำไร ...

#!/bin/sh -

# sends six "pings" to a list of hosts defined in "hosts" below

hosts="
host.a
host.b
host.c
host.d
host.e
"

for p in $hosts
do
# ONLY CHOOSE ONE OF THE FOLLOWING, NOT BOTH
# dump results to file
    ping -c 6 $p >>./PINGED
# dump output to console
    ping -c 6 $p
done

exit

สามารถปรับปรุงได้อย่างง่ายดาย ซึ่งทำให้มันมีประโยชน์มาก :)

สำหรับตัวเลือกเพิ่มเติมโปรดดู man pages สำหรับbsd pingและLinux ping

HTH

แก้ไข: อัปเดตเล็กน้อยเพื่อยุติคำสั่ง ping @ 6 pings และเพิ่มตัวเลือกหน้าคน


การpingโทรครั้งแรกจะไม่ส่งคืนเว้นแต่จะพบข้อผิดพลาดร้ายแรง
Gilles 'หยุดความชั่วร้าย' ใน

จริงๆ? ฉันทดสอบสิ่งนี้ก่อนโพสต์ไว้ที่นี่และทำงานตามที่อธิบายไว้ คุณรู้ว่าไม่ทุกโฮสต์จะตอบสนองต่อการถูก ping บางทีโฮสต์ที่คุณสอบถามไม่ตอบสนอง ไม่ว่าในกรณีใด ในความพยายามที่จะให้ข้อเสนอแนะที่รวดเร็วกว่าฉันได้ จำกัด การสืบค้นไว้ที่ 6 คำขอต่อโฮสต์
บางคน

2
อย่างน้อยตอนนี้สคริปต์ก็มีโอกาสที่จะยุติในทางปฏิบัติ แต่ถ้าไม่มีการขนานมันก็ไร้ประโยชน์เลย หากโฮสต์แรกตอบกลับผู้ใช้จะไม่ได้รับข้อมูลใด ๆ เกี่ยวกับโฮสต์อื่น ๆ ในช่วง 5 วินาทีแรก
Gilles 'หยุดความชั่วร้าย' ใน

นี่คือเจตนาที่จะเป็นตัวอย่างให้มากขึ้นตามความต้องการ ฉันสามารถสร้างรายการอื่นที่ทำให้ท่อของคุณอิ่มตัว แต่นั่นคือสิ่งที่คุณต้องการจริงๆหรือ :)
บางคน

1
สิ่งที่ฉันควรทำคือการสร้างลิงค์ไปยังหน้า ping man อย่างสุจริต ฉันสร้างมันเป็นเทมเพลตง่าย ๆ สำหรับหนึ่งที่จะปรับเปลี่ยนได้อย่างง่ายดายสำหรับวิธีการของตัวเอง ping ทำงานแตกต่างกันอย่างมากในระบบปฏิบัติการที่แตกต่างกันและภายใต้เงื่อนไขเครือข่ายที่แตกต่างกันมากมายซึ่งแต่ละคนอาจทำงานภายใต้ ดังนั้นจึงไม่มีค่าเริ่มต้น "สมบูรณ์แบบ" สำหรับทุกคน แต่ละคนมี "จุดหวาน" ของตัวเอง :) ฉันพูดถึงว่ามันทำงานได้อย่างสมบูรณ์แบบสำหรับฉัน? ;)
ใครบางคน

-2

ใช้คำสั่งแบบง่าย ๆ ด้านล่าง:

$ getip(){ ping -c 1 -t 1 $1 | head -1 | cut -d ' ' -f 3 | tr -d '()' 2>&1 | tee >> /tmp/result.log & }
$ getip 'hostname.number1.net'
$ getip 'hostname.number2.net'
$ getip 'hostname.number3.net'
$ getip 'hostname.number4.net'
$ getip 'hostname.number5.net'
$ getip 'hostname.number6.net'
$ getip 'hostname.number7.net'
$ getip 'hostname.number8.net'
$ cat /tmp/result.log
ABC.DEF.GHI.XY1
ABC.DEF.GHI.XY2
ABC.DEF.GHI.XY3
ABC.DEF.GHI.XY4
ABC.DEF.GHI.XY5
ABC.DEF.GHI.XY6
ABC.DEF.GHI.XY7
ABC.DEF.GHI.XY8
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.