Linux 下第一个shell脚本

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 概念和原理 Shell是什么? Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁。 Sh...
    陵无山阅读 3,681评论 0 27
  • 官网 中文版本 好的网站 Content-type: text/htmlBASH Section: User ...
    不排版阅读 4,707评论 0 5
  • 什么是Shell     简单来说Shell其实就是一个命令解释器,而它的作用就是解释并执行用户输入的命令及程序。...
    Surpassme阅读 2,832评论 1 24
  • 第 2 章 SHELL 基础知识2.1 shell脚本我们在上面简单介绍了一下什么是shell脚本,现在我们来进一...
    LiWei_9e4b阅读 1,641评论 0 0
  • 用了caffe有一段时间了,感觉自己写shell脚本的能力有待提高,特地从菜鸟笔记处系统的看了一遍,其实学习基础就...
    yichen_china阅读 1,878评论 2 30

友情链接更多精彩内容