天天看點

Linux 下第一個shell腳本

shell腳本可以高效的完成一件事情,和批處理一個意思。學習寫第一個shell腳本。

今天開始寫一個判斷能否ping通ip的腳本

1.首先我們看看ping通與不同之間的差別

可以ping通的情況,如下圖所示:

Linux 下第一個shell腳本
不可以ping通的情況,如下圖所示:
Linux 下第一個shell腳本

通和不通差別的地方有很多,随便找一個不同點就可以判斷其還是不同

2.這裡我們就找上圖示注得到地方作為差別,即如果是不通的情況下,received的數字一定為0,如果通,那received的數字就是非0.

想個辦法過濾出0這個字段

[root@localhost ~]# ping 192.168.50.1 -c 4 | grep received
           
Linux 下第一個shell腳本

圖檔.png

[root@localhost ~]# ping 192.168.50.1 -c 4 | grep received | awk '{print $4}'
           
Linux 下第一個shell腳本

3.有上面辦法就可以寫一個ping腳本了.

ping.sh

#!/bin/bash
IP=$1
pre=`ping $IP -c 4 | grep received | awk '{print $4}'`
if [ $pre == 0 ]
then
echo "ping".$IP."bu tong"
else
echo "ping".$IP."tong le"
fi
           
[root@localhost ~]# ll | grep ping.sh
           
Linux 下第一個shell腳本

可以看到我們寫的ping.sh腳本還沒有可執行權限。

4.給腳本檔案可執行權限

[root@localhost ~]# chmod +x ping.sh 
[root@localhost ~]# ll | grep ping.sh
           
Linux 下第一個shell腳本

5.測試

[root@localhost ~]# ./ping.sh 1.1.1.1
           
Linux 下第一個shell腳本
[root@localhost ~]# ./ping.sh 192.168.50.1
           
Linux 下第一個shell腳本

注:bash調試腳本

[root@localhost ~]# bash -x ping.sh 1.1.1.1
+ IP=1.1.1.1
++ grep received
++ awk '{print $4}'
++ ping 1.1.1.1 -c 4
+ pre=4
+ '[' 4 == 0 ']'
+ echo 'ping.1.1.1.1.tong le'
ping.1.1.1.1.tong le
[root@localhost ~]#
           

改程序式:循環一個ip.txt

#!/bin/bash
if [ ! -s ip.txt ]
then
echo "ip.txt file is none"
else
ipnum=`sed -n '$=' ip.txt`
for ((i=1;i<="$ipnum";i++))
do
ip=`sed -n "$i"p ip.txt`
pre=`ping $ip -c 4 | grep received | awk '{print $4}'`
if [ $pre == 0 ]
then
echo "$ip down"
else
echo "$ip up"
fi
done
fi

           

繼續閱讀