ping IP 带时间戳循环显示并写入日志

Posted su-root

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ping IP 带时间戳循环显示并写入日志相关的知识,希望对你有一定的参考价值。

在工作中,判断网络是否通畅,首选命令就是ping,但有时候我们需要持续ping一个或多个地址时,需要加 -t 即可,但有时候需要在ping的时候加入时间戳并把ping记录写入到日志里面,方法如下:

windos版:

首选把下面代码复制到文本里去,然后把扩展名更改为.bat

@echo off
@echo.----------------------------------------------------------
@echo.       一   Author: aゞ锦衣卫
@echo.       键   Reminder:请以管理员身份运行                                                                 
@echo.       ★   Description:一键ping+时间戳+写日志服务                                                     
@echo.       服   Blog:www.cnblogs.com/su-root                                               
@echo.       务   Email:1147076062@qq.com VX:zikun868686
@echo.-----------------------------------------------------------
@echo.  ※温馨提醒:终止执行请按: Ctrl+C
@echo.-----------------------------------------------------------
@echo off
set /p host=请输入需要检测的IP地址: 
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)

运行.bat文件效果如下:

技术图片

注:.bat文件放到哪里执行,就会在本地生成相应的.log日志文件。

我们打开日志文件看看:

技术图片

 如果我们需要检测某IP地址的指定端口可将上面代码稍加改动即可:

@echo off
@echo.----------------------------------------------------------
@echo.       一   Author: aゞ锦衣卫
@echo.       键   Reminder:请以管理员身份运行                                                                 
@echo.       ★   Description:一键端口检测服务                                                     
@echo.       服   Blog:www.cnblogs.com/su-root                                               
@echo.       务   Email:1147076062@qq.com VX:zikun868686
@echo.-----------------------------------------------------------
@echo.  ※温馨提醒:终止执行请按: Ctrl+C
@echo.-----------------------------------------------------------
@echo off
set /p host=请输入需要检测的IP地址: 
set /p port=请输入需要检测的端口号:
set logfile=Log_%host%.log
echo Target Host = %host% >>%logfile%
for /f "tokens=*" %%A in (tcping -d -t -n 1 %host% %port%) do (echo %%A>>%logfile% && GOTO Ping)
:Ping
for /f "tokens=* skip=2" %%A in (tcping -d -t -n 1 %host% %port%) 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)

执行效果如下:

技术图片

注:去官网下载tcping工具(根据自身系统选择32位/64位)https://elifulkerson.com/projects/tcping.php   tcping工具具体用法可参看:https://www.cnblogs.com/su-root/p/10924758.html

我们打开日志文件看看:

技术图片

 

linux版:

[[email protected]118 ~]# ping 192.168.0.117|awk print strftime("%c",systime()) "\\t"$0
2019年07月04日 星期四 23时14分35秒    PING 192.168.0.117 (192.168.0.117) 56(84) bytes of data.
2019年07月04日 星期四 23时14分35秒    64 bytes from 192.168.0.117: icmp_seq=1 ttl=64 time=0.223 ms
2019年07月04日 星期四 23时14分36秒    64 bytes from 192.168.0.117: icmp_seq=2 ttl=64 time=0.385 ms
2019年07月04日 星期四 23时14分37秒    64 bytes from 192.168.0.117: icmp_seq=3 ttl=64 time=0.420 ms
2019年07月04日 星期四 23时14分38秒    64 bytes from 192.168.0.117: icmp_seq=4 ttl=64 time=0.291 ms
2019年07月04日 星期四 23时14分39秒    64 bytes from 192.168.0.117: icmp_seq=5 ttl=64 time=1.21 ms
2019年07月04日 星期四 23时14分40秒    64 bytes from 192.168.0.117: icmp_seq=6 ttl=64 time=1.45 ms

把输出信息写入到log日志中:

[[email protected]118 ~]# ping 192.168.0.117 -c 6|awk print strftime("%c",systime()) "\\t"$0 >ping.log

[[email protected]-118 ~]# cat ping.log 
2019年07月04日 星期四 23时15分06秒    PING 192.168.0.117 (192.168.0.117) 56(84) bytes of data.
2019年07月04日 星期四 23时15分06秒    64 bytes from 192.168.0.117: icmp_seq=1 ttl=64 time=0.231 ms
2019年07月04日 星期四 23时15分07秒    64 bytes from 192.168.0.117: icmp_seq=2 ttl=64 time=0.331 ms
2019年07月04日 星期四 23时15分08秒    64 bytes from 192.168.0.117: icmp_seq=3 ttl=64 time=0.185 ms
2019年07月04日 星期四 23时15分09秒    64 bytes from 192.168.0.117: icmp_seq=4 ttl=64 time=0.347 ms
2019年07月04日 星期四 23时15分10秒    64 bytes from 192.168.0.117: icmp_seq=5 ttl=64 time=0.259 ms
2019年07月04日 星期四 23时15分11秒    64 bytes from 192.168.0.117: icmp_seq=6 ttl=64 time=0.377 ms
2019年07月04日 星期四 23时15分11秒    
2019年07月04日 星期四 23时15分11秒    --- 192.168.0.117 ping statistics ---
2019年07月04日 星期四 23时15分11秒    6 packets transmitted, 6 received, 0% packet loss, time 5038ms
2019年07月04日 星期四 23时15分11秒    rtt min/avg/max/mdev = 0.185/0.288/0.377/0.069 ms

我们也可把任务放到后台运行

[[email protected]118 ~]# ping 192.168.0.117 -c 6|awk print strftime("%c",systime()) "\\t"$0 >ping.log &
[1] 1560
[[email protected]-118 ~]# 

当然也有其他方法检测,以上方法不是唯一的。

以上是关于ping IP 带时间戳循环显示并写入日志的主要内容,如果未能解决你的问题,请参考以下文章

需要一个批处理:一直ping一个ip地址,并且把ping的记过写入文本日志文件。且记录下每个ping不通的时间

为ping添加时间戳后台运行实时输出保存日志

Linux下Ping -T 返回的时间戳怎么看

TCP/IP详解卷一07

linux长ping带时间输出到日志

使用 python 和 pandas 传输和写入 Parquet 得到时间戳错误