先看脚本内容
[root@db scripts]# cat ping.sh ##一个简单的ping主机段有多少主机在线脚步
#!/bin/sh
for i in {1..254}
do
IP=172.16.210.$i
{
ping -c1 -W1 $IP > /dev/null 2>&1
[ $? -eq 0 ] && echo "$IP"
} &
done
wait
echo "在线ping测试完成"
[root@db scripts]# sh ping.sh ##在centos系统正常
172.16.210.1
172.16.210.10
172.16.210.11
172.16.210.13
172.16.210.12
172.16.210.36
172.16.210.250
在线ping测试完成
czq@sunlog:~$ sh ping.sh ##在ubuntu系统只输出了结束语句ping完成
在线ping测试完成
因为ubuntu系统默认使用的shell是dash,而centos默认使用的是bash,所以我们要更改ubuntu所使用的shell为bash
czq@sunlog:~$ ls -l /bin/sh
lrwxrwxrwx 1 root root 4 4月 9 19:31 /bin/sh -> dash
解决办法
czq@sunlog:~$ sudo dpkg-reconfigure dash
选择否
dash.png提示信息可以忽略
正在删除 dash 导致 /bin/sh 转移到 /bin/sh.distrib
正在添加 bash 导致 /bin/sh 转移到 /bin/sh.distrib
正在删除 dash 导致 /usr/share/man/man1/sh.1.gz 转移到 /usr/share/man/man1/sh.distrib.1.gz
正在添加 bash 导致 /usr/share/man/man1/sh.1.gz 转移到 /usr/share/man/man1/sh.distrib.1.gz
czq@sunlog:~$ sh ping.sh 再次执行就好了
172.16.210.1
172.16.210.12
172.16.210.13
172.16.210.11
172.16.210.10
172.16.210.36
172.16.210.250
在线ping测试完成
网友评论