shell 脚本实验 -3

73 阅读1分钟

1、通过for循环的脚本实现对于整个网段的主机在线情况的检测

vim ping.sh

#!/bin/bash
ip="192.168.107."

for i in {1..254}
do
{
if ping -c2 -W1 ${ip}${i} &>/dev/null
then
echo "host ${ip}${i} is online" >> /opt/online.txt
else
echo "host ${ip}${i} is offline" >> /opt/offline.txt
fi
} &
done
wait



检测在线
[root@localhost ~]# cat /opt/online.txt 
host 192.168.107.1 is online
host 192.168.107.2 is online
host 192.168.107.190 is online
[root@localhost ~]# 


离线
[root@localhost ~]# cat /opt/offline.txt 
host 192.168.107.3 is offline
host 192.168.107.4 is offline
host 192.168.107.6 is offline
host 192.168.107.8 is offline
host 192.168.107.12 is offline
host 192.168.107.14 is offline
host 192.168.107.11 is offline
host 192.168.107.19 is offline
host 192.168.107.31 is offline
host 192.168.107.28 is offline
host 192.168.107.22 is offline
host 192.168.107.21 is offline
host 192.168.107.26 is offline
host 192.168.107.24 is offline
host 192.168.107.18 is offline


2、 通过脚本实现对于txt和tar文件的批量操作

vim test.sh

#创建需要文件
[root@localhost data]# touch {1..10}.txt
[root@localhost data]# touch {1..10}.tar
[root@localhost data]# ls
10.tar  1.tar  2.tar  3.tar  4.tar  5.tar  6.tar  7.tar  8.tar  9.tar
10.txt  1.txt  2.txt  3.txt  4.txt  5.txt  6.txt  7.txt  8.txt  9.txt


#脚本实现
#!/bin/bash
for i in `ls /data`
do
if [[ $i == *.txt ]]
then
mv /data/$i  /opt
elif [[ $i =~ tar$ ]]
then
rm -rf /data/$i
fi
done


#测试结果
[root@localhost ~]# bash test.sh 
[root@localhost ~]# ls /opt/
10.txt  1.txt  2.txt  3.txt  4.txt  5.txt  6.txt  7.txt  8.txt  9.txt  offline.txt  online.txt  rh
[root@localhost ~]# ls /data/
[root@localhost ~]# vim test.sh
[root@localhost ~]# 


3、通过脚本打印出99乘法表

vim 99.sh

#!/bin/bash
for j in {1..9}
do
       for i in `seq $j`
       do
       echo -e "${i}*${j}=$[i*j]\t\c"
       done
echo
done

#测试结果
[root@localhost opt]# bash 99.sh 

1*1=1	
1*2=2	2*2=4	
1*3=3	2*3=6	3*3=9	
1*4=4	2*4=8	3*4=12	4*4=16	
1*5=5	2*5=10	3*5=15	4*5=20	5*5=25	
1*6=6	2*6=12	3*6=18	4*6=24	5*6=30	6*6=36	
1*7=7	2*7=14	3*7=21	4*7=28	5*7=35	6*7=42	7*7=49	
1*8=8	2*8=16	3*8=24	4*8=32	5*8=40	6*8=48	7*8=56	8*8=64	
1*9=9	2*9=18	3*9=27	4*9=36	5*9=45	6*9=54	7*9=63	8*9=72	9*9=81