美文网首页Linux 基础操作
Linux 下第一个shell脚本

Linux 下第一个shell脚本

作者: zzqsmile | 来源:发表于2018-05-03 19:03 被阅读0次

    shell脚本可以高效的完成一件事情,和批处理一个意思。学习写第一个shell脚本。
    今天开始写一个判断能否ping通ip的脚本
    1.首先我们看看ping通与不同之间的区别
    可以ping通的情况,如下图所示:


    不可以ping通的情况,如下图所示:


    通和不通区别的地方有很多,随便找一个不同点就可以判断其还是不同
    2.这里我们就找上图标注得到地方作为区别,即如果是不通的情况下,received的数字一定为0,如果通,那received的数字就是非0.
    想个办法过滤出0这个字段

    [root@localhost ~]# ping 192.168.50.1 -c 4 | grep received
    
    图片.png
    [root@localhost ~]# ping 192.168.50.1 -c 4 | grep received | awk '{print $4}'
    
    图片.png

    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
    
    图片.png

    可以看到我们写的ping.sh脚本还没有可执行权限。
    4.给脚本文件可执行权限

    [root@localhost ~]# chmod +x ping.sh 
    [root@localhost ~]# ll | grep ping.sh
    

    5.测试

    [root@localhost ~]# ./ping.sh 1.1.1.1
    
    图片.png
    [root@localhost ~]# ./ping.sh 192.168.50.1
    
    图片.png

    注: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
    
    

    相关文章

      网友评论

        本文标题:Linux 下第一个shell脚本

        本文链接:https://www.haomeiwen.com/subject/ibjlrftx.html