写一个shell脚本,判断一些IP是否ping通,不通就把时间和IP记录下来
时间: 2024-06-05 07:06:52 浏览: 11
#!/bin/bash
# 定义需要检测的IP列表,多个IP用空格隔开
IP_LIST="192.168.0.1 192.168.0.2 192.168.0.3"
for IP in $IP_LIST; do
# 使用ping命令检测IP是否可达,-c参数表示ping的次数,-w参数表示超时时间
if ping -c 1 -w 1 $IP &>/dev/null; then
echo "$IP is up."
else
echo "$(date +%F_%T) $IP is down." >> ping.log
fi
done
# 输出执行结果
echo "Done."
相关问题
用shell写一个高并发ping局域网的IP地址的脚本,要求最多同时ping 5个IP
以下是一个使用shell脚本实现高并发ping局域网IP地址的示例:
```bash
#!/bin/bash
# 定义局域网IP地址范围(根据实际情况进行调整)
start_ip="192.168.0.1"
end_ip="192.168.0.255"
# 定义最大并发数
max_concurrency=5
# 并行ping函数
parallel_ping() {
ip=$1
ping -c 1 -W 1 $ip >/dev/null 2>&1
if [ $? -eq 0 ]; then
echo "IP地址 $ip 可以ping通"
else
echo "IP地址 $ip 无法ping通"
fi
}
# 循环遍历IP地址范围
for ((i=0; i<256; i++)); do
ip=$(printf "%s.%d" "${start_ip%.*}" "$i")
# 获取当前正在执行的并发数
running_jobs=$(jobs -p | wc -l)
# 如果并发数超过最大并发数,则等待直到有空闲的并发槽
while [ $running_jobs -ge $max_concurrency ]; do
sleep 0.1
running_jobs=$(jobs -p | wc -l)
done
# 并行ping IP地址
parallel_ping $ip &
done
# 等待所有ping命令完成
wait
```
在脚本中,你可以根据实际情况调整`start_ip`和`end_ip`变量,以定义局域网IP地址的范围。然后,使用循环遍历IP地址范围,并使用`parallel_ping`函数来并行ping每个IP地址。在执行之前,脚本会检查当前正在执行的并发数是否超过了最大并发数`max_concurrency`,如果超过了,则等待直到有空闲的并发槽。
请注意,脚本中使用了`ping -c 1 -W 1 $ip >/dev/null 2>&1`来执行ping命令,并将输出重定向到/dev/null,以避免在终端输出ping的结果。你可以根据需要对ping命令的参数进行调整。
写一个自动测试ip 是否通的shell 脚本
可以使用ping命令来测试IP是否通,以下是一个简单的shell脚本:
```
#!/bin/bash
echo "请输入要测试的IP地址:"
read ip
ping -c 3 $ip > /dev/null
if [ $? -eq 0 ]
then
echo "$ip 可以ping通!"
else
echo "$ip 无法ping通!"
fi
```
使用方法:将以上代码保存为一个文件,比如testip.sh,然后在终端中执行以下命令:
```
chmod +x testip.sh
./testip.sh
```
接着按照提示输入要测试的IP地址即可。