"पिंग" को प्रदर्शित करने का समय और पिंग की तिथि कैसे बताएं


39

जब मैं पिंग करता हूं तो मुझे यह प्रदर्शित होता है:

> ping -i 4 www.google.fr 
64 bytes from wi-in-f94.1e100.net (173.194.67.94): icmp_seq=503 ttl=46 time=45.5 ms
.......
.......
64 bytes from wi-in-f94.1e100.net (173.194.67.94): icmp_seq=508 ttl=46 time=44.9 ms
64 bytes from wi-in-f94.1e100.net (173.194.67.94): icmp_seq=509 ttl=46 time=45.1 ms

मैं पिंग के समय से पहले करना चाहते हैं।

कुछ इस तरह:

> (right functions) + ping -i 7 www.google.fr 
mardi 15 mai 2012, 10:29:06 (UTC+0200) - 64 bytes from wi-in-f94.1e100.net (173.194.67.94): icmp_seq=503 ttl=46 time=45.5 ms
.......
.......
mardi 15 mai 2012, 10:29:13 (UTC+0200) - 64 bytes from wi-in-f94.1e100.net (173.194.67.94): icmp_seq=508 ttl=46 time=44.9 ms
mardi 15 mai 2012, 10:29:20 (UTC+0200) - 64 bytes from wi-in-f94.1e100.net (173.194.67.94): icmp_seq=509 ttl=46 time=45.1 ms

आप इसे कमांड लाइन में कैसे करेंगे (यदि यह संभव है)?


जवाबों:


77

उपयोग:

ping www.google.fr | while read pong; do echo "$(date): $pong"; done

आपको इस तरह से परिणाम मिलेगा:

यहाँ छवि विवरण दर्ज करें


1
वाह बहुत अच्छा। और शेल सामान सीखने में मददगार। धन्यवाद!
ओलिवियर पोंस

सेकंड में अपटाइमping 192.168.70.1 | while read pong; do echo "$(awk '{print $1}' /proc/uptime): $pong"; done
dps

16

ping -Dविकल्प का उपयोग करने की एक और संभावना जो आपको यूनिक्स समय के रूप में टाइमस्टैम्प मिलती है।

tilo@t-ubuntu:~$ ping google.com -D
PING google.com (173.194.33.73) 56(84) bytes of data.
[1388886989.442413] 64 bytes from sea09s15-in-f9.1e100.net (173.194.33.73): icmp_req=1 ttl=57 time=11.1 ms
[1388886990.443845] 64 bytes from sea09s15-in-f9.1e100.net (173.194.33.73): icmp_req=2 ttl=57 time=11.0 ms
[1388886991.445200] 64 bytes from sea09s15-in-f9.1e100.net (173.194.33.73): icmp_req=3 ttl=57 time=10.8 ms
[1388886992.446617] 64 bytes from sea09s15-in-f9.1e100.net (173.194.33.73): icmp_req=4 ttl=57 time=10.9 ms
^C
--- google.com ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3004ms
rtt min/avg/max/mdev = 10.860/11.005/11.139/0.123 ms
tilo@t-ubuntu:~$ 

यहां "अचु" कमांड का एक संस्करण थोड़ा अलग प्रारूप के साथ है:

ping www.google.com -i 10 -c 3000 | while read pong; do echo "$(date +%Y-%m-%d_%H%M%S): $pong"; done >PingTest_2014-01-04.log

कि तुम हो जाता है:

2014-01-04_175748: 64 bytes from sea09s16-in-f19.1e100.net (173.194.33.115): icmp_req=13 ttl=57 time=10.5 ms

6

एक उपयोगिता है ts, जो स्टड पढ़ता है, टाइमस्टैम्प जोड़ता है, और इसे स्टडआउट में लिखता है:

me@my-laptop:~$ ping localhost | ts
Nov 08 09:15:41 PING localhost (127.0.0.1) 56(84) bytes of data.
Nov 08 09:15:41 64 bytes from localhost (127.0.0.1): icmp_seq=1 ttl=64 time=0.060 ms
Nov 08 09:15:42 64 bytes from localhost (127.0.0.1): icmp_seq=2 ttl=64 time=0.098 ms
Nov 08 09:15:43 64 bytes from localhost (127.0.0.1): icmp_seq=3 ttl=64 time=0.082 ms
Nov 08 09:15:44 64 bytes from localhost (127.0.0.1): icmp_seq=4 ttl=64 time=0.091 ms

इसे उबंटू में स्थापित किया जा सकता है ।sudo apt install moreutils


1
+1 बस एक सिडोनेट के रूप में - ts Ubuntu में स्थापित नहीं है (कम से कम 16.04) डिफ़ॉल्ट रूप से, इसलिए आपको इसे स्थापित करने की आवश्यकता हैapt install moreutils
dmikam

3

आप gawk(या awk, यदि आपके /etc/alternatives/awkअंक /usr/bin/gawk) का उपयोग कर सकते हैं :

ping -c 4 www.google.fr | gawk '{print strftime("%c: ") $0}'

यह अचु के उत्तर में दृष्टिकोण के समान है , लेकिन एक शेल लूप के बजाय pingआउटपुट को पाइप किया gawkजाता है जो कॉल करता है date। उस दृष्टिकोण के साथ, यह बिना काम करता है -c, लेकिन यदि आप n पिंग के बाद पिंग स्टॉप बनाने के लिए पास नहीं करते हैं , और आप लूप को + के साथ रोकते हैं , तो सामान्य आंकड़े प्रिंट नहीं करेंगे।-c nCtrlCping

ek@Io:~$ ping -c 4 www.google.fr | gawk '{print strftime("%c: ") $0}'
Tue 03 Jan 2017 10:09:51 AM EST: PING www.google.fr (216.58.193.99) 56(84) bytes of data.
Tue 03 Jan 2017 10:09:51 AM EST: 64 bytes from sea15s08-in-f3.1e100.net (216.58.193.99): icmp_seq=1 ttl=51 time=327 ms
Tue 03 Jan 2017 10:09:52 AM EST: 64 bytes from sea15s08-in-f3.1e100.net (216.58.193.99): icmp_seq=2 ttl=51 time=302 ms
Tue 03 Jan 2017 10:09:53 AM EST: 64 bytes from sea15s08-in-f3.1e100.net (216.58.193.99): icmp_seq=3 ttl=51 time=282 ms
Tue 03 Jan 2017 10:09:54 AM EST: 64 bytes from sea15s08-in-f3.1e100.net (216.58.193.99): icmp_seq=4 ttl=51 time=349 ms
Tue 03 Jan 2017 10:09:54 AM EST:
Tue 03 Jan 2017 10:09:54 AM EST: --- www.google.fr ping statistics ---
Tue 03 Jan 2017 10:09:54 AM EST: 4 packets transmitted, 4 received, 0% packet loss, time 3003ms
Tue 03 Jan 2017 10:09:54 AM EST: rtt min/avg/max/mdev = 282.035/315.227/349.166/25.398 ms
ek@Io:~$ ping www.google.fr | gawk '{print strftime("%c: ") $0}'
Tue 03 Jan 2017 10:10:35 AM EST: PING www.google.fr (216.58.193.99) 56(84) bytes of data.
Tue 03 Jan 2017 10:10:35 AM EST: 64 bytes from sea15s08-in-f99.1e100.net (216.58.193.99): icmp_seq=1 ttl=51 time=305 ms
Tue 03 Jan 2017 10:10:35 AM EST: 64 bytes from sea15s08-in-f99.1e100.net (216.58.193.99): icmp_seq=2 ttl=51 time=365 ms
Tue 03 Jan 2017 10:10:36 AM EST: 64 bytes from sea15s08-in-f99.1e100.net (216.58.193.99): icmp_seq=3 ttl=51 time=390 ms
Tue 03 Jan 2017 10:10:38 AM EST: 64 bytes from sea15s08-in-f99.1e100.net (216.58.193.99): icmp_seq=4 ttl=51 time=824 ms
Tue 03 Jan 2017 10:10:38 AM EST: 64 bytes from sea15s08-in-f99.1e100.net (216.58.193.99): icmp_seq=5 ttl=51 time=287 ms
^C

ऐसा होता है कि क्या pingआउटपुट आउटपुट पाइप gawkया शेल whileलूप में है। कारण यह है कि पाइप के दाईं ओर स्थित कमांड, इसके बजाय SIGINTping को प्राप्त करता है , जब + दबाया जाता है, और समाप्त होने से पहले आंकड़े प्रिंट करना नहीं जानता है।CtrlCping

यदि आप एक पाइप के बाईं ओर के pingबिना चलाए हैं -c(जैसा कि ऊपर दिखाया गया है) और आप इसे इस तरह से समाप्त करना चाहते हैं कि यह अभी भी आँकड़ों को प्रिंट करता है, तो इसके बजाय टर्मिनल में Ctrl+ Cदबाएं जहां यह चल रहा है, आप चला सकते हैं एक अन्य टर्मिनल से, कमांड की प्रक्रिया आईडी के साथ बदल रहा है । यदि आप केवल एक उदाहरण चला रहे हैं तो आप बस उपयोग कर सकते हैं ।kill -INT PIDPIDpingpingkillall -INT ping

वैकल्पिक रूप से, आप pingपाइप के बाईं ओर कमांड को एक कमांड के साथ बदल सकते हैं जो एक शेल चलाता है, उस शेल की प्रक्रिया आईडी की रिपोर्ट करता है, और फिर उस शेल को pingकमांड के साथ बदल देता है (इसके कारण समान पीआईडी ​​है):

sh -c 'echo $$; exec ping www.google.fr' | gawk '{print strftime("%c: ") $0}'

फिर आउटपुट की पहली पंक्ति, pingकमांड की प्रक्रिया आईडी दिखाएगी (जो आमतौर पर हर बार अलग होगी)। यह इस तरह दिखेगा, लेकिन एक अलग समय और तारीख और शायद एक अलग प्रक्रिया आईडी के साथ:

Tue 20 Mar 2018 12:11:13 PM EDT: 7557

फिर, दूसरे टर्मिनल से, आप चलाए गए वास्तविक प्रक्रिया आईडी के साथ kill -INT 7557बदल सकते हैं , कमांड को इस तरह 7557से समाप्त pingकर सकते हैं ताकि इसे आंकड़े प्रिंट करने का कारण बन सके।

(यदि आप अपने शेल के जॉब कंट्रोल फीचर्स का लाभ उठाते हैं , तो आप इसे उसी टर्मिनल के भीतर भी प्राप्त कर सकते हैं, लेकिन यदि आप अपने टर्मिनल से टेक्स्ट को कॉपी करना चाहते हैं, तो बिना किसी बाहरी भाग को हटाने के, जहां आप उस टर्मिनल में कमांड चलाते थे, तब आपको pingएक अलग टर्मिनल से समाप्त होना चाहिए ।)

आगे की पढाई:


क्या पहले ping करने के लिए ctrl + c भेजने का कोई तरीका है?
ऐटी

1
@atti हां, आप प्रक्रिया में SIGINT(जो कि Ctrl + C दबाते हैं) pingविशेष रूप से, का उपयोग करके killया भेज सकते हैं killall। मैंने विवरण के साथ इस उत्तर का विस्तार किया है।
एलियाह कगन

जाग का अच्छा उपयोग। +1
रिपेट

0
ping google.in | xargs -n1 -i bash -c 'echo `date +"%Y-%m-%d %H:%M:%S"`" {}"'

यदि आपकी रुचि इसे फ़ाइल में सहेजने में है, तो टर्मिनल में नीचे कमांड टाइप करें

ping google.in | xargs -n1 -i bash -c 'echo `date +"%Y-%m-%d %H:%M:%S"`" {}"' >> "/home/name_of_your_computer/Desktop/Ping_Test.txt"

आपको कोई भी पाठ फ़ाइल बनाने की आवश्यकता नहीं है, यह स्वचालित रूप से कर देगा

Ping_Test.txt

2018-04-19 15:35:53 PING google.in (216.58.203.164) 56(84) bytes of data.
2018-04-19 15:35:53 64 bytes from bom07s11-in-f4.1e100.net (216.58.203.164): icmp_seq=1 ttl=57 time=23.0 ms
2018-04-19 15:35:53 64 bytes from bom07s11-in-f4.1e100.net (216.58.203.164): icmp_seq=2 ttl=57 time=38.8 ms
2018-04-19 15:35:54 64 bytes from bom07s11-in-f4.1e100.net (216.58.203.164): icmp_seq=3 ttl=57 time=32.6 ms
2018-04-19 15:35:55 64 bytes from bom07s11-in-f4.1e100.net (216.58.203.164): icmp_seq=4 ttl=57 time=22.2 ms
2018-04-19 15:35:56 64 bytes from bom07s11-in-f4.1e100.net (216.58.203.164): icmp_seq=5 ttl=57 time=22.1 ms
2018-04-19 15:35:59 64 bytes from bom07s11-in-f4.1e100.net (216.58.203.164): icmp_seq=7 ttl=57 time=23.6 ms
2018-04-19 15:36:00 64 bytes from bom07s11-in-f4.1e100.net (216.58.203.164): icmp_seq=8 ttl=57 time=22.6 ms
2018-04-19 15:36:01 64 bytes from bom07s11-in-f4.1e100.net (216.58.203.164): icmp_seq=9 ttl=57 time=22.3 ms
2018-04-19 15:36:02 64 bytes from bom07s11-in-f4.1e100.net (216.58.203.164): icmp_seq=10 ttl=57 time=26.3 ms

-1

(विचारों के लिए अचू और एलिया कागन के लिए धन्यवाद) इसका एक तरीका है

  • pingआउटपुट में समय जोड़ें
  • के फुटनोट रखें ping
  • और इस पूरे निर्माण को समाप्त करें ctrl+c

ऐसा करने के लिए कमांड (पाइप के बाद) के दाहिने हिस्से का SIGINTउपयोग करने की उपेक्षा करना चाहिए trap "" INT:

$ ping www.google.fr | bash -c 'trap "" INT; awk "{print strftime(\"%c - \") \$0}"'  
lun 26 Mar 2018 22:05:08 +0300 - PING www.google.fr (173.194.73.94) 56(84) bytes of data.
lun 26 Mar 2018 22:05:08 +0300 - 64 bytes from lq-in-f94.1e100.net (173.194.73.94): icmp_seq=1 ttl=47 time=19.6 ms
lun 26 Mar 2018 22:05:09 +0300 - 64 bytes from lq-in-f94.1e100.net (173.194.73.94): icmp_seq=2 ttl=47 time=20.1 ms
^Clun 26 Mar 2018 22:05:09 +0300 - 
lun 26 Mar 2018 22:05:09 +0300 - --- www.google.fr ping statistics ---
lun 26 Mar 2018 22:05:09 +0300 - 2 packets transmitted, 2 received, 0% packet loss, time 1000ms
lun 26 Mar 2018 22:05:09 +0300 - rtt min/avg/max/mdev = 19.619/19.866/20.114/0.284 ms
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.