让linux系统每隔1分钟ping一个目标IP,目标IP也是linux,获取IP后写入某个文件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了让linux系统每隔1分钟ping一个目标IP,目标IP也是linux,获取IP后写入某个文件相关的知识,希望对你有一定的参考价值。

让linux系统A每隔1分钟ping一个目标IP,目标IP也是linux B,获取A的IP后写入某个文件

怎么做?

1、思路:用计划任务每分钟执行一次
*/1 * * * * /opt/ping.sh;
2、根据需求写脚本,例如每分钟ping一次并记录时间,每天存一个文件,保留最近一个月的日志
cat ping.sh;
ymd=`date +%Y%m%d`
date; >> ping_$ymd.txt
ping 172.16.10.1 -c 1 >> ping_$ymd.txt
find . -type f -name "ping*txt" -mtime +30 -exec rm -rf \;
参考技术A 用crontab作业,结合输出重定向 大概是这样
#crontab -e
*/1 * * * * ping 192.168.1.1 >> /root/ping
*/1 * * * * ifconfig >> /root/ip
输出重定向(>>)后面的ping和ip都是文件追问

是A ping B, B 获取A的公网IP

追答

tcpdump 抓包试试,
# yum install wireshark
但是这个需要有桌面环境的

参考技术B tcpdump icmp就能看到源地址,但是icmp的包你分析他没有意义 参考技术C 看不懂,请叙述清楚一点.追问

家里有一台linux设备,想让它一直ping一个服务器IP, 怎么获取家里这台linux设备的公网IP地址呢?

就是想知道哪个IP正在ping我!

追答

你去ping别人,想获取自己的公网ip是多少,是吗?

不行的.

ping命令用法以及判断目标主机操作系统

ping命令用法以及判断目标主机操作系统

1. ping命令

当给某个IP地址发送一个数据包时,对方就要返回一个同样大小的数据包,根据返回的数据包可以确定目标主机的存在,也可以初步判断目标主机的操作系统等,利用它可以检查网络是否畅通。
计算机“开始” - “运行” ,在弹出的对话框输入cmd,进入命令解释程序。

1.1 ping 命令格式

  • ping 127.0.0.1
    测试本机的TCP/IP协议,若不通,表示TCP/IP协议的安装或者运行存在某些问题。


     
    1.1 ping 127.0.0.1.jpg
  • ping 192.168.1.3(本机IP地址)
    测试本机网络配置,若没有应答,说明本地连接IP地址信息配置有问题。
  • ping 192.168.1.5(局域网里其他主机IP地址)
    这个命令经过网卡及网线到其他计算机,再返回,收到回复应答说明本地网络运行正常。如果收到0个回送应答,可能子网掩码不正确或者网卡配置存在其他问题。
  • ping www.baidu.com
    对域名执行ping命令,若无返回应答,可能是DNS服务器的IP地址配置不正确或者DNS服务器有故障。

1.2 ping的其他一些用法

1.2.1 一直ping下去
ping 192.168.1.1 -t 
加大包ping才能看出问题,那么这个时候我们应该输入ping 网址或IP -t -l 1000再回车
ping 192.168.1.1 -t -l 1000   #表示连续ping 1000个字节、
ping 192.168.1.1 -t -n 100   #表示让系统ping完100个就结束
ping 192.168.1.1 -r 9           # -r 取值1-9,最大为9, 查询一下经过的路由数

1.3 使用ping命令查看目标主机操作系统

Microsoft Windows [版本 6.1.7601]
版权所有 (c) 2009 Microsoft Corporation。保留所有权利。

C:UsersAdministrator>ping 192.168.5.1
正在 Ping 192.168.5.1 具有 32 字节的数据:
来自 192.168.5.1 的回复: 字节=32 时间=1ms TTL=64
来自 192.168.5.1 的回复: 字节=32 时间=2ms TTL=64
来自 192.168.5.1 的回复: 字节=32 时间=1ms TTL=64
来自 192.168.5.1 的回复: 字节=32 时间=1ms TTL=64

192.168.5.1 的 Ping 统计信息:
    数据包: 已发送 = 4,已接收 = 4,丢失 = 0 (0% 丢失),
往返行程的估计时间(以毫秒为单位):
    最短 = 1ms,最长 = 2ms,平均 = 1ms

C:UsersAdministrator>

关于ping 命令中的 TTL

TTL(Time To Live) 当我们在使用ping命令时,返回结果里会带一个TTL值。这个东西的含义其实就是Time To Live,指的是报文在网络中能够‘存活’的限制。以前这个限制方式是设定一个时间(Time To Live中的Time就是这样来的),当报文在网络中转发时,时间超过这个限制,最后一个收到报文的‘路由点’就会把它扔掉,而不继续转发。后来把时间限制改为了跳数限制,就是当报文在网络中转发时,每经过一个‘路由点‘,就把预先设定的这个TTL数值减1,直到最后TTL=1时报文就被扔掉,不向下转发。

路由点:我这里是指完成路由功能的机器,因为并不是只有路由器才可以完成路由转发功能,比如主机可以配置路由转发。

TTL每经过一个ip子层就减少1,TTL 字段值可以帮助我们识别操作系统类型:

UNIX 及类 UNIX 操作系统 ICMP 回显应答的 TTL 字段值为 255
Compaq Tru64 5.0 ICMP 回显应答的 TTL 字段值为 64
微软 Windows NT/2K操作系统 ICMP 回显应答的 TTL 字段值为 128
微软 Windows 95 操作系统 ICMP 回显应答的 TTL 字段值为 32

但有些情况下有所特殊:

LINUX Kernel 2.2.x & 2.4.x ICMP 回显应答的 TTL 字段值为 64

FreeBSD 4.1, 4.0, 3.4;
Sun Solaris 2.5.1, 2.6, 2.7, 2.8;
OpenBSD 2.6, 2.7,
NetBSD
HP UX 10.20
ICMP 回显应答的 TTL 字段值为 255

Windows 95/98/98SE
Windows ME
ICMP 回显应答的 TTL 字段值为 32

Windows NT4 WRKS
Windows NT4 Server
Windows 2000
ICMP 回显应答的 TTL 字段值为 128

这样,我们就可以通过这种方法来辨别目标主机操作系统:

操作系统 TTL
LINUX 64
WIN2K/NT 128
WINDOWS 系列 32
UNIX 系列 255

以上是关于让linux系统每隔1分钟ping一个目标IP,目标IP也是linux,获取IP后写入某个文件的主要内容,如果未能解决你的问题,请参考以下文章

如何让linux Ping通主机

linux ping命令 让其间隔五秒刷新一次 ping -i <time> ip 具体怎么写 求解

linux怎么ping不通呢?

windows与linux ping 显示的ip不一样

高手赐教 怎么在linux下ping 一个IP地址

ping命令用法以及判断目标主机操作系统