快捷菜单
常用功能一站直达
更多功能请点顶栏「快捷菜单」

1[root@docusaurus-wiki linux_batch_ping]# cat ip-test.txt
210.30.136.104
310.30.136.105
4
510.30.141.133
610.30.141.134
7
810.30.138.104
910.30.138.105
10[root@docusaurus-wiki linux_batch_ping]# cat ping.sh
11#!/bin/bash
12#根据测试需要修改ip-test.txt
13
14for k in `cat ip-test.txt`
15
16do
17ping -c 2 $k |grep -q 'ttl=' && echo "$k ok" || echo "$k failed"
18done
19[root@docusaurus-wiki linux_batch_ping]# ping.sh和ip-test.txt文件上传到linux系统下注意事项:在把ping.sh文件上传到linux下,要保证其文件格式是linux版本,否则脚本执行时会报错; 可用
cat -v ping来观察。
实际测试效果:

当前目录下。
1[root@docusaurus-wiki linux_batch_ping]# cat ip-test.txt
210.30.136.104
310.30.136.105
4
510.30.141.133
610.30.141.134
7
810.30.138.104
910.30.138.105
10[root@docusaurus-wiki linux_batch_ping]# cat ping.sh
11#!/bin/bash
12#根据测试需要修改ip-test.txt
13
14for k in `cat ip-test.txt`
15
16do
17ping -c 2 $k |grep -q 'ttl=' && echo "$k ok" || echo "$k failed"
18done
19[root@docusaurus-wiki linux_batch_ping]# 这段代码是一个简单的 Bash 脚本,用于批量测试在 ip-test.txt 文件中列出的 IP 地址是否可以通过 ICMP(网络控制消息协议,通常用于执行 ping 测试)到达。
以下是脚本 ping.sh 中每一行代码的逐行解释:
#!/bin/bash:这行被称为 shebang,它告诉系统这个脚本应当使用 /bin/bash,即 Bash shell 环境来执行。
空行:在脚本中不起作用,只是为了可读性。
#根据测试需要修改ip-test.txt:这是一个注释,为用户提供了一条指示,说明如果需要进行不同的测试,则应修改 ip-test.txt 文件。
空行:在脚本中不起作用,只是为了可读性。
for k in cat ip-test.txt:这是一个 for 循环,循环的变量是 `k`。这个循环会逐行读取 `ip-test.txt` 中的内容。反引号( ``)用于命令替换,这意味着Shell会首先执行反引号内的命令(这里是cat ip-test.txt`),并将输出作为 for 循环的输入。
do:这是循环的开始。
ping -c 2 $k |grep -q 'ttl=' && echo "$k ok" || echo "$k failed":这是一个管道命令序列,执行以下操作:
ping -c 2 $k:对变量 $k 中的 IP 地址执行 ping 命令,其中 -c 2 表示发送两个 ICMP 回显请求包。|:管道符号,将上一个命令的输出传递给下一个命令。grep -q 'ttl=':使用 grep 命令在 ping 的输出中静默搜索文本 ’ttl=’(表示 ping 成功得到了响应)。&&:逻辑与(AND)运算符,如果 grep -q 'ttl=' 命令(即 ping 成功)返回值为 0(成功),就会执行后面的命令。echo "$k ok":如果 ping 命令成功(找到 ’ttl=’),则打印 IP 地址和 “ok”。||:逻辑或(OR)运算符,如果 grep -q 'ttl=' 命令(即 ping 失败)返回值非 0(失败),就会执行后面的命令。echo "$k failed":如果 ping 命令失败(没有找到 ’ttl=’),则打印 IP 地址和 “failed”。done:这个循环的结束。
总之,这个脚本会逐个读取 ip-test.txt 文件中的每个 IP 地址,并尝试 ping 这些地址。如果 ping 成功(即 ICMP 响应中包含 TTL),则打印 IP 地址和 “ok”;如果 ping 失败(即没有收到 ICMP 响应),则打印 IP 地址和 “failed”。
在实际执行前,需要给 ping.sh 脚本文件执行权限,这可以通过运行命令 chmod +x ping.sh 来实现。然后,通过运行 ./ping.sh 命令来执行脚本。
1[root@NG-WAF095239 fj]# cat ping.sh
2#!/bin/bash
3for ip in `cat ip.txt` #启动循环调动ip地址
4do
5{
6ping -c1 -W1 $ip &>/dev/null # 测试ip是否在线
7if [ $? -eq 0 ] ;then
8 echo -e "$ip" >>ok_`date +%F`.txt #如果修改成功进行记录
9else
10 echo "$ip" >>fail_`date +%F`.txt #如果修改失败进行记录
11fi
12}&
13done待亲自测试。
日历 · 精选 · 友链 · 更多
如果内容对你有帮助,欢迎请我喝杯咖啡 ☕



One的公众号
爱折腾博客的小白