linux:for循环,检测IP是否可以ping通

#! /bin/bash
for IPS in `cat ips.txt`
do
ping -c 3 -i 0.2 -w 1 $IPS &> /dev/null
########### 尝试次数3, 发送包间隔时间0.2, 等待超时时间1
if [ $? -eq 0 ]
then
echo “$IPS, OK”
else
echo “$IPS, BAD”
fi
done

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: # 下面是一个可以扫描在线主机的shell脚本,使用for循环: for ip in 192.168.1.1 192.168.1.2 192.168.1.3 192.168.1.4 do ping -c 1 -W 1 $ip > /dev/null if [ $? -eq 0 ]; then echo "$ip is up" else echo "$ip is down" fi done ### 回答2: 您好! 以下是一个使用for循环扫描在线主机的shell脚本示例: ```shell #!/bin/bash # 定义要扫描的IP地址范围 start_ip="192.168.0.1" end_ip="192.168.0.255" # 使用for循环遍历IP地址范围内的每个地址 for ((i = ${start_ip##*.}; i <= ${end_ip##*.}; i++)); do ip="${start_ip%.*}.${i}" # 使用ping命令检查主机是否在线 if ping -c 1 -W 1 "$ip" &> /dev/null; then echo "主机 $ip 在线" else echo "主机 $ip 不在线" fi done ``` 这个脚本首先定义了要扫描的IP地址范围,然后使用for循环遍历这个范围内的每个IP地址。在循环中,使用ping命令检查每个主机是否在线。如果ping命令返回成功,则说明主机在线,会显示"主机 [IP地址] 在线"的信息;如果ping命令失败,则说明主机不在线,会显示"主机 [IP地址] 不在线"的信息。 希望对您有所帮助! ### 回答3: 下面是一个可以用Shell脚本过for循环扫描在线主机的例子: ```shell #!/bin/bash # 定义IP范围 start_ip="192.168.0.1" # 起始IP地址 end_ip="192.168.0.254" # 结束IP地址 # 使用for循环扫描主机 for ip in $(seq $(echo $start_ip | tr '.' ' ') $(echo $end_ip | tr '.' ' ')); do ip=$(echo $ip | tr ' ' '.') # 使用ping命令测试主机是否在线 if ping -c 1 -W 1 $ip >/dev/null; then echo "主机 $ip 在线" else echo "主机 $ip 不在线" fi done ``` 解释: 1. 首先,在脚本中定义了起始和结束IP地址,即要扫描的IP范围。 2. 使用`seq`命令将起始和结束IP地址转换为数字序列,然后使用管道将其转换为点分十进制IP地址。 3. 使用for循环遍历每个IP地址。 4. 在循环中,首先将当前IP地址恢复为点分十进制格式。 5. 然后使用`ping`命令发送一个ICMP回显请求以测试主机是否在线。 `-c 1` 参数表示只发送一次请求, `-W 1` 参数表示超时时间为1秒。 6. 如果`ping`命令返回0,即主机在线,将输出“主机 $ip 在线”。如果返回非零值,即主机不在线,将输出“主机 $ip 不在线”。 以上脚本可在Linux系统中运行,过for循环检测指定IP范围内的主机是否在线。注意,脚本需要具有执行权限,并且在脚本所在目录下执行。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值