विंडोज सीएलआई पर टाइमस्टैम्प के साथ पिंग


80

Windows कमांड प्रॉम्प्ट पर cmd, मैं उपयोग करता हूंping -t to 10.21.11.81

Reply from 10.21.11.81: bytes=32 time=3889ms TTL=238
Reply from 10.21.11.81: bytes=32 time=3738ms TTL=238
Reply from 10.21.11.81: bytes=32 time=3379ms TTL=238

क्या इस तरह से आउटपुट पाने की कोई संभावनाएं हैं?

10:13:29.421875 Reply from 10.21.11.81: bytes=32 time=3889ms TTL=238
10:13:29.468750 Reply from 10.21.11.81: bytes=32 time=3738ms TTL=238
10:13:29.468751 Reply from 10.21.11.81: bytes=32 time=3379ms TTL=238

कृपया ध्यान दें कि मैं इसे केवल सीएमडी द्वारा प्रदान किए गए आदेशों के साथ प्राप्त करना चाहता हूं



एक और अधिक सामान्य संस्करण: stackoverflow.com/questions/21564/…
एंटोन तारासेंको

जवाबों:


95
@echo off
    ping -t localhost|find /v ""|cmd /q /v:on /c "for /l %%a in (0) do (set "data="&set /p "data="&if defined data echo(!time! !data!)" 

नोट : कोड एक बैच फ़ाइल के अंदर इस्तेमाल किया जाएगा। कमांड लाइन से उपयोग करने के लिए के %%aसाथ बदलें%a

पिंग शुरू करें, एक सही लाइन बफ़र किए गए आउटपुट को बाध्य करें ( find /v), और cmdविलंबित विस्तार के साथ एक प्रक्रिया शुरू करें जो सक्षम है कि पाइप डेटा को पढ़ने वाले एक अनन्त लूप करेगा जो कि वर्तमान समय के साथ उपसर्ग किए गए कंसोल को प्रतिध्वनित करेगा।

2015-01-08 संपादित : तेज / नई मशीनों / ओएस संस्करणों में पिछले कोड में एक सिंक्रनाइज़ेशन समस्या है, जिससे set /pरीड को एक लाइन pingमिलती है जबकि कमांड अभी भी इसे लिख रहा है और परिणाम लाइन कट हैं।

@echo off
    ping -t localhost|cmd /q /v /c "(pause&pause)>nul & for /l %%a in () do (set /p "data=" && echo(!time! !data!)&ping -n 2 localhost>nul"

सब्सक्रिप्शन pauseकी शुरुआत में दो एडिशनल कमांड शामिल किए गए हैं (केवल एक का उपयोग किया जा सकता है, लेकिन जैसा कि pauseएक इनपुट चरित्र का उपभोग करता है, इनपुट डेटा की प्रतीक्षा करने के लिए एक सीआरएलएफ जोड़ी टूट जाती है और एलएफ के साथ एक पंक्ति पढ़ी जाती है) और एक ping -n 2 localhostशामिल है आंतरिक लूप में प्रत्येक पढ़ने के लिए एक सेकंड प्रतीक्षा करें। परिणाम एक अधिक स्थिर व्यवहार और कम CPU उपयोग है।

नोट: इनर pingको एक के साथ बदला जा सकता है pause, लेकिन फिर प्रत्येक रीड की गई लाइन का पहला कैरेक्टर इसके द्वारा भस्म हो जाता है pauseऔर इसके द्वारा प्राप्त नहीं होता हैset /p


7
@ Mr.SuicideSheep, यह एक बैच फ़ाइल है। यदि आप इसे कमांड लाइन से जांचना चाहते हैं, तो सिंगल प्रतिशत संकेतों के साथ सभी डबल प्रतिशत संकेतों (कि बैच फ़ाइलों के अंदर भागने की आवश्यकता) को बदलें।
MC ND

5
जब मैं इसका उपयोग करने की कोशिश करता हूं, तो मैं आउटपुट में लाइन ब्रेक प्राप्त करता हूं। वे आउटपुट में 52 वें वर्ण के बाद नियमित रूप से दिखाई देते हैं। किसी भी विचार क्यों?
रयान

2
@ एलेक्स, यदि आपको तारीख की आवश्यकता है (मूल प्रश्न को वांछित आउटपुट में शामिल नहीं किया गया है), echoकमांड को बदल करecho(!date! !time! !data!
MC ND

4
पिंग पर कोई प्रतिक्रिया नहीं है, इसलिए मैंने नियंत्रण + सी और कंप्यूटर को धीमा कर दिया, फिर नीले रंग की स्क्रीन को
Dan

2
@ डान, जिस तरह से मैं इस कोड को चलाने वाला एक बीएसओडी पाने के लिए सोच सकता हूं (hw या ड्राइवर समस्याओं को छोड़ना) एक कांटा बम है। क्या आपने अपनी बैच फ़ाइल को कॉल किया है ping.batया ping.cmd?
एमसी एनडी

92

WindowsPowerhell:

विकल्प 1

ping.exe -t COMPUTERNAME|Foreach{"{0} - {1}" -f (Get-Date),$_}

विकल्प 2

Test-Connection -Count 9999 -ComputerName COMPUTERNAME | Format-Table @{Name='TimeStamp';Expression={Get-Date}},Address,ProtocolAddress,ResponseTime

4
अन्य सुझावों के अनंत लूप / अधिकतम सीपीयू मुद्दों के बिना खूबसूरती से काम किया।
सेरिनस

1
Test-Connection -Count 9999 -ComputerName google.com | फॉर्मेट-टेबल @ {नाम = 'टाइमस्टैम्प'; एक्सप्रेशन = {गेट-डेट}}, पता, प्रोटोकॉलअड्ड्रेस, रिस्पांस टाइम | सी -file टी: \ Users \ yourname \ डेस्कटॉप \ pingtest.txt -append
Serinus

सरल और कुरकुरा समाधान। पहला विकल्प मेरे लिए काम किया
श्री हर्षा

यदि आप विकल्प 2 को सीधे PowerShell प्रॉम्प्ट में पेस्ट करना चाहते हैं, तो आप -ComputerName बिट को छोड़ सकते हैं, और यह आपको ComputerNames की सूची के लिए संकेत देगा (बस दूसरा एक खाली छोड़ दें)। Test-Connection -Count 9999 | Format-Table @{Name='TimeStamp';Expression={Get-Date}},Address,ProtocolAddress,ResponseTime
mwfearnley

1
> C:\temp\ping.txtफ़ाइल के आउटपुट को पुनर्निर्देशित करने के साथ ऊपर दिए गए विकल्पों का विस्तार करना । यदि आप लाइव आउटपुट भी देखना चाहते हैं, तो बस Get-Content C:\temp\ping.txt -tail 10 -waitदूसरे पॉवरशेल में निष्पादित करें ।
फ़्लैंडर्सन

68

आप इसे Bash (जैसे Linux या WSL) में कर सकते हैं:

ping 10.0.0.1 | while read line; do echo `date` - $line; done

यद्यपि यह आपके द्वारा आमतौर पर प्राप्त होने वाले आँकड़ों को नहीं देता है, जब आप अंत में ^ C को मारते हैं।


4
यह अब तक का सबसे अच्छा है
सतीश

2
पूरी तरह से काम करता है !!
शोएब खान

4
यह विंडोज पर काम नहीं करता है, जैसा कि प्रश्न में पूछा गया था।
Janos

3
यह लिनक्स (WSL) के लिए विंडोज सबसिस्टम के तहत विंडोज पर ठीक काम करता है, जो एक वैकल्पिक विशेषता है।
ली

1
मैं पिंग परिणामों को लॉग करने की कोशिश कर रहा था। date +%sयह अधिक सहायक है क्योंकि यह पूर्णांक टाइमस्टैम्प दिखाता है।
हिमांशु शेखर

28

बैच स्क्रिप्ट:

@echo off

set /p host=host Address: 
set logfile=Log_%host%.log

echo Target Host = %host% >%logfile%
for /f "tokens=*" %%A in ('ping %host% -n 1 ') do (echo %%A>>%logfile% && GOTO Ping)
:Ping
for /f "tokens=* skip=2" %%A in ('ping %host% -n 1 ') do (
    echo %date% %time:~0,2%:%time:~3,2%:%time:~6,2% %%A>>%logfile%
    echo %date% %time:~0,2%:%time:~3,2%:%time:~6,2% %%A
    timeout 1 >NUL 
    GOTO Ping)

यह स्क्रिप्ट किस मेजबान से पिंग के लिए पूछेगी। पिंग आउटपुट स्क्रीन और लॉग फ़ाइल के लिए आउटपुट है। उदाहरण लॉग फ़ाइल आउटपुट:

Target Host = www.nu.nl
Pinging nu-nl.gslb.sanomaservices.nl [62.69.166.210] with 32 bytes of data: 
24-Aug-2015 13:17:42 Reply from 62.69.166.210: bytes=32 time=1ms TTL=250
24-Aug-2015 13:17:43 Reply from 62.69.166.210: bytes=32 time=1ms TTL=250
24-Aug-2015 13:17:44 Reply from 62.69.166.210: bytes=32 time=1ms TTL=250

लॉग फ़ाइल का नाम LOG_ [hostname] .log है और स्क्रिप्ट के समान फ़ोल्डर में लिखा गया है।


यह कहता है कि नींद को मान्यता नहीं मिली है लेकिन स्क्रिप्ट ठीक काम करती है। मैं परिणाम को cmd विंडो में गूँजने से कैसे रोकूँ और केवल लॉग फ़ाइल में जाऊँ?
allwynmasc

आपको उसी फ़ोल्डर में sleep.zip को डाउनलोड और निकालना चाहिए जहां से आप बैच फ़ाइल निष्पादित करते हैं। स्लीप कमांड स्क्रिप्ट को प्रत्येक पिंग के बाद 1 सेकंड इंतजार करने के लिए मजबूर करता है। इसके बिना, 'पिंग्स' के बीच कोई ठहराव नहीं है और आपका लॉगफाइल बहुत तेजी से बढ़ेगा। Cmd विंडो में परिणाम दिखाने से रोकने के लिए, आप स्क्रिप्ट से अंतिम पंक्ति को हटा सकते हैं जो "इको" शब्द से शुरू होती है
sabo-fx

@ सबो-एफएक्स कभी-कभी 'स्लीप 1> एनयूएल' काम नहीं करता है (मान्यता प्राप्त कमांड नहीं), मैंने 'टाइमआउट 1> एनयूएल' का इस्तेमाल किया है
एसपर्लिस

@ एस्प्रेसिस: यह कमाल है। टिप के लिए Thanx। मैं "टाइमआउट" कमांड के अस्तित्व से अनजान था। मैं मानता हूं कि ओएस के साथ शामिल होने वाले कमांड का उपयोग करने के लिए इसका बहुत अच्छा तरीका है।
सबो-एफएक्स

मैंने स्क्रिप्ट का परीक्षण किया। ठीक काम करें, लेकिन आपको सेट के बाद और पी / से पहले 3. लाइन में एक स्पेस चार जोड़ना होगा।
मिका

10

यह किसी की मदद कर सकता है: [विंडोज पॉवरशेल में चलाने की आवश्यकता है]

ping.exe -t 10.227.23.241 |Foreach{"{0} - {1}" -f (Get-Date),$_} >> Ping_IP.txt

- वर्तमान निर्देशिका या उपयोगकर्ता के होम पथ पर Ping_IP.txt फ़ाइल की जाँच करें।

उपरोक्त कमांड आपको नीचे की तरह एक फ़ाइल में आउटपुट देता है;

9/14/2018 8:58:48 AM - Pinging 10.227.23.241 with 32 bytes of data:
9/14/2018 8:58:48 AM - Reply from 10.227.23.241: bytes=32 time=29ms TTL=117
9/14/2018 8:58:49 AM - Reply from 10.227.23.241: bytes=32 time=29ms TTL=117
9/14/2018 8:58:50 AM - Reply from 10.227.23.241: bytes=32 time=28ms TTL=117
9/14/2018 8:58:51 AM - Reply from 10.227.23.241: bytes=32 time=27ms TTL=117
9/14/2018 8:58:52 AM - Reply from 10.227.23.241: bytes=32 time=28ms TTL=117
9/14/2018 8:58:53 AM - Reply from 10.227.23.241: bytes=32 time=27ms TTL=117
9/14/2018 8:58:54 AM - Reply from 10.227.23.241: bytes=32 time=28ms TTL=117

3
यह समाधान इस प्रश्न के पहले उत्तर में दिए गए एक के समान है ।
स्कोमीसा

@skomisa: यह थोड़ा अलग है क्योंकि यह फाइल को सेव कर रहा है जिसे बाद में उपयोग किया जा सकता है।
खालिदमेमुदावन

6

विंडोज पर

आप अन्य उत्तरों में से किसी एक का उपयोग कर सकते हैं।

यूनिक्स / लिनक्स पर

while :;do ping -n -w1 -W1 -c1 10.21.11.81| grep -E "rtt|100%"| sed -e "s/^/`date` /g"; sleep 1; done

या pingtअपने ~ / .bashrc के लिए कार्य के रूप में :

pingt() {
  while :;do ping -n -w1 -W1 -c1 $1| grep -E "rtt|100%"| sed -e "s/^/`date` /g"; sleep 1; done
}

स्रोत: https://stackoverflow.com/a/26666549/1069083


1
मैक पर, -wएक अमान्य विकल्प है ping
जॉरिस

3

मुझे लगता है कि मेरे कोड को इसकी आवश्यकता है जो सभी को चाहिए:

ping -w 5000 -t -l 4000 -4 localhost|cmd /q /v /c "(pause&pause)>nul &for /l %a in () do (for /f "delims=*" %a in ('powershell get-date -format "{ddd dd-MMM-yyyy HH:mm:ss}"') do (set datax=%a) && set /p "data=" && echo([!datax!] - !data!)&ping -n 2 localhost>nul"

प्रदर्शित करने के लिए:

[Fri 09-Feb-2018 11:55:03] - Pinging localhost [127.0.0.1] with 4000 bytes of data:
[Fri 09-Feb-2018 11:55:05] - Reply from 127.0.0.1: bytes=4000 time<1ms TTL=128
[Fri 09-Feb-2018 11:55:08] - Reply from 127.0.0.1: bytes=4000 time<1ms TTL=128
[Fri 09-Feb-2018 11:55:11] - Reply from 127.0.0.1: bytes=4000 time<1ms TTL=128
[Fri 09-Feb-2018 11:55:13] - Reply from 127.0.0.1: bytes=4000 time<1ms TTL=128

नोट : कोड एक कमांड लाइन के अंदर उपयोग किया जाना है, और आपके पास ओएस पर पहले से स्थापित अधिकार होना चाहिए।


3

यह बाद के विंडोज संस्करणों के लिए बिल फिट हो सकता है:

for /l %i in (1,0,2) do @echo|cmd /v:on /c set /p=!time! & ping -n 1 10.21.11.81 | findstr "Reply timed" && timeout /t 2 > nul:

यह वही है जिसकी मुझे तलाश है! धन्यवाद ... पूरी तरह से काम करता है। मुझे समय मिलता है और फिर आउटपुट मैं लाइन से एक पिंग लाइन से उम्मीद करूंगा
कीथ ई। ट्रूसेडेल

2

इसे इस्तेमाल करे:

निम्नलिखित के साथ एक बैच फ़ाइल बनाएँ:

echo off

cd\

:start

echo %time% >> c:\somedirectory\pinghostname.txt

ping pinghostname >> c:\somedirectory\pinghostname.txt

goto start

आप अपनी आवश्यकताओं के आधार पर पिंग कमांड में अपने खुद के विकल्प जोड़ सकते हैं। यह पिंग के रूप में एक ही लाइन पर समय की मुहर नहीं लगाता है, लेकिन यह अभी भी आपको आवश्यक जानकारी देता है।

फ़ैपिंग का उपयोग करने का एक और बेहतर तरीका है, इसे डाउनलोड करने के लिए http://www.kwakkelflap.com/fping.html पर जाएं


उस लिंक पर अब 404
हिंसी

1

उपयोग

ping -D 8.8.8.8

मैन पेज से

-D     Print timestamp (unix time + microseconds as in gettimeofday) before each line

उत्पादन

[1593014142.306704] 64 bytes from 8.8.8.8: icmp_seq=2 ttl=120 time=13.7 ms
[1593014143.307690] 64 bytes from 8.8.8.8: icmp_seq=3 ttl=120 time=13.8 ms
[1593014144.310229] 64 bytes from 8.8.8.8: icmp_seq=4 ttl=120 time=14.3 ms
[1593014145.311144] 64 bytes from 8.8.8.8: icmp_seq=5 ttl=120 time=14.2 ms
[1593014146.312641] 64 bytes from 8.8.8.8: icmp_seq=6 ttl=120 time=14.8 ms

0

एक अन्य शक्तियाँ विधि (मैं केवल असफलता चाहता था)

$ping = new-object System.Net.NetworkInformation.Ping
$target="192.168.0.1"
Write-Host "$(Get-Date -format 's') Start ping to $target"
while($true){
    $reply = $ping.send($target)
    if ($reply.status -eq "Success"){
        # ignore success    
        Start-Sleep -Seconds 1
    }
    else{
        Write-Host "$(Get-Date -format 's') Destination unreachable" $target

    }
}

0

मुझे अपने डेटाबेस के टाइम आउट इश्यू के लिए नेटवर्क इश्यू की निगरानी के लिए भी इसकी आवश्यकता है। मैं नीचे दिए गए कमांड कोड का उपयोग करता हूं:

ping -t Google.com|cmd /q /v /c "(pause&pause)>nul & for /l %a in () do (set /p "data=" && echo(!date! !time! !data!)&ping -n 2 Google.com>nul" >C:\pingtest.txt

आपको बस Google.com को अपने सर्वर नाम में बदलना होगा। यह मेरे लिए पूरी तरह से काम करता है। और समाप्त होने पर इसे रोकना याद रखें। Pingtest.txt फ़ाइल 4.5 KB प्रति मिनट (आसपास) बढ़ेगी।

रेमंड.सीसी के लिए धन्यवाद। https://www.raymond.cc/blog/timestamp-ping-with-hrping/


0

Windows के लिए MC ND के उत्तर में वृद्धि।
मुझे WinPE में चलने के लिए एक स्क्रिप्ट की आवश्यकता थी, इसलिए मैंने निम्नलिखित कार्य किया:

@echo off
SET TARGET=192.168.1.1
IF "%~1" NEQ "" SET TARGET=%~1

ping -t %TARGET%|cmd /q /v /c "(pause&pause)>nul & for /l %%a in () do (set /p "data=" && echo(!time! !data!)&ping -n 2 localhost >nul"

यह एक विशेष आईपी पते ( 192.168.1.1मेरे उदाहरण में) को हार्डकोड किया जा सकता है या एक पारित पैरामीटर ले सकता है। और जैसा कि MC ND के उत्तर में, हर 1 सेकंड में पिंग दोहराता है।


0

सरल 😎:

@echo off

set hostName=www.stackoverflow.com
set logfile=C:\Users\Dell\Desktop\PING_LOG\NetworkLog\Log_%hostName%.text
echo Network Loging Running %hostName%...
echo Ping Log %hostName% >>%logfile%

:Ping
for /f "tokens=* skip=2" %%A in ('ping %hostName% -n 1 ') do (
    echo %date% %time:~0,2%:%time:~3,2%:%time:~6,2% %%A>>%logfile%
    timeout 1 >NUL
    GOTO Ping)

0

ping -n 2 localhostलूप के अंत में अतिरिक्त होने के बजाय , आप !data!केवल संभावनाओं को जोड़ने से पहले केवल R को जोड़ सकते हैं क्योंकि उत्तर या अनुरोध हैं। पहले पात्र का सेवन किया जाता है pause>nul। इसलिए निम्नलिखित अभिव्यक्ति होने के बजाय:

ping localhost -t -l 4|cmd /q /v /c "(pause&pause)>nul & for /l %%a in () do (set /p data=&echo(!date! !time! !data!)&ping -n 2 localhost>nul"

आप इस अभिव्यक्ति का उपयोग कर सकते हैं:

ping localhost -t -l 4|cmd /q /v /c "(pause&pause)>nul & for /l %%a in () do (set /p data=&echo(!date! !time! R!data!)&pause>nul"

जो एक ही आउटपुट का उत्पादन करता है जैसे:

22:34:49.49 Reply from 172.217.4.46: bytes=4 time=14ms TTL=116
22:34:50.49 Reply from 172.217.4.46: bytes=4 time=14ms TTL=116
22:34:55.47 Request timed out.
22:34:56.49 Reply from 172.217.4.46: bytes=4 time=14ms TTL=116
22:34:57.49 Reply from 172.217.4.46: bytes=4 time=14ms TTL=116

0

इसके बजाय यह प्रयास करें:

ping -c2 -s16 sntdn | awk '{print NR " | " strftime("%Y-%m-%d_%H:%M:%S") " | " $0  }'

जांचें कि क्या यह आपको सूट करता है


1
पेरडोना, कोलॉक्वे "अन अल उर्फ ​​डी सर्विडोर" कोलोका ला डायरिकोनिप एन लुगर डे ला कैडेना "स्नेटन", सलूड़ोस
जुआनजेर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.