万能的脚本
Linux ping指定网段所有Ip
Linux命令ping中,不支持设置接收毫秒超时,默认接收超时未4s,最小设置为1s,但是如果ping网段所有ip,有255个那就要4分钟!!太慢了! 但是可以用多进程的方式去ping,然后就很快了! 参考链接
原脚本:
#!/bin/bash
for var in {1..254};
do
ip=192.168.54.$var
ping -c 1 -w 1 -W 1 $ip >/dev/null 2>&1
if [ $? = 0 ];then
echo "$ip [yes]"
else
echo "$ip [no]"
fi
done
多进程方式:
#!/bin/bash
ip="192.168.54."
echo "ping log:" > ./ping.txt
for i in {1..254}
do
ping -c 1 -w 1 -W 1 $ip$i | grep -q "ttl=" && echo "$ip$i [yes]" >> ./ping.txt || echo "$ip$i [no]" >> ./ping.txt &
done
echo "wait 5s...."
sleep 5
cat ./ping.txt
cat ./ping.txt | wc -l
trap 在脚本中处理信号
#!/bin/bash
echo running
cleanup(){
echo cleanup
}
trap "cleanup" EXIT
ccc(){
echo ccc
exit
}
# 按 Ctrl + C 会使脚本终止执行,实际上系统发送里 SIGINT 信号给脚本进程,SIGINT 信号的默认处理方式就是退出程序。
# 如果要在 Ctrl + C 时不退出程序,那么就要使用 trap 命令来指定 SIGINT 的处理方式。
# trap 命令不仅仅能处理 Linux 信号,还能对脚本退出(EXIT)、调试(DEBUG)、错误(ERR)、返回(RETURN)等情况指定处理方式
# 参考链接:https://www.iteye.com/blog/codingstandards-836588
trap "ccc" SIGINT
while : ; do
sleep 1
done