Shell编程练习(一)——ping一下

学习了一段时间的shell编程,发现还是比较容易上手的,果然有了一定的C语言基础其他都好办!



某天突发奇想,想要用自己学过的shell语言来编写一个脚本,实现查看EI的FTP服务器是否在工作的功能。虽说可以直接登录试试就知道结果,但是也是为了好玩,也是顺便实践一下。PS:能够拿自己刚学会的知识来成功处理一个问题是一个很棒的过程!!


废话不多说,开始记录我编写这样一个shell脚本的全过程:

主体思路:想要确定一个服务器是否在正常工作,最简单的测试方法就是ping一下,如果ping完之后被ping的服务器能返回相同的ping数据包则表示它正常。(先要了解ping这个命令有什么用法,具体参考http://ei.vstu.cn/forum.php?mod=viewthread&tid=242


尝试一:程序实现如下

运行脚本后得到结果:

结果是一直显示数据包信息,而且还要手动用Ctrl+C中断,非常不方便。

尝试二:程序实现如下

使用参数-c之后,限定了回应的次数,运行脚本结果如下:

可以实现自动停止ping,但是依旧显示出来太多东西,运行结果不是很友好,不太像一个程序。


尝试三
:在ping后再加上参数-q,意思是不显示指令执行过程,开头和结尾的相关信息除外(蛋疼的地方)

结果如下:

显示出来的信息越来越少,好样的!!

尝试四:有没有办法然它直接显示“EI FTP Server is working
normally...”。想到这里,第一感觉是让ping在后台运行就好了吧。
于是又接着修改代码:



运行结果如下:



情况跟自己想的不一样,这一次脚本是执行了,但是需要按Enter后终端提示符才会再次出来。。。。然后尝试过命令行用括号括起来,后面是&符号,结果依旧。。。。


尝试五:又想到shell中执行命令行的返回值(主要是预定义特殊变量$?),运行成功则返回0。再次尝试一下吧,在先前的基础上修改程序如下:



运行结果,You are so
amazing!!!



待激动冷却之后,冷静下来,这程序还是不够科学。。。要是ping不通的话,照样有返回值,照样显示服务器正常工作


尝试六
:加个判断语句来改善以上问题,修改之后的程序:

做的过程中发现前几次尝试脚本的第一行就写错了,指定脚本类型那一行。。。不过在运行脚本的时候直接指定了使用bash来解析脚本,所以没有提示错误!

Shell编程练习(一)——ping一下

时间: 2024-10-06 20:02:54

Shell编程练习(一)——ping一下的相关文章

SHELL编程学习笔记

本文描述unix shell的各种应用实例,根据查阅资料和自我总结,作为自己今后复习的模板.本文搜集整理常用的shell应用实例,以例子详述unixshell部分命令的使用,着重于正则表达式以及grep.sed.awk等命令,涵盖业务开发中需要使用到的unix shell编程命令,供查阅或者自测使用,面向已经熟悉UNIX基本操作的开发人员. 注:   文中大部分表达式在sco-unixunixware 7下使用sh测试通过,有些规则或表达式不能通过测试或结果不正确,在本文档中使用波浪下划线将其标

Linux运维 第二阶段 (九)shell编程

Linux运维 第二阶段 (九)shell编程 一.1.基础正则表达式: *         前一个字符匹配0次或任意多次 .         匹配除了换行符外任意一个字符 ^         匹配行首,例:^Hello,匹配以Hello开头的行 $         匹配行尾,例:Hello$匹配以Hello结尾的行 []        中括号中指定的一个字符,例:[0-9].[a-z] [^]       匹配中括号字符以外的任意一个字符,例:[^0-9].[^a-z] \         转

Linux Shell编程讲解

Shell编程总结 Seq命令总结用法: 选项: -f, --format=格式使用printf 样式的浮点格式 -s, --separator=字符串使用指定字符串分隔数字(默认使用:\n) -w, --equal-width 在列前添加0 使得宽度相同实例 来自: http://man.linuxde.net/seq 1.横着打印数字 2.竖着打印数字: 3.用seq输出,交给bc命令计算 注:可以计算加减乘除,浮点数,进制转换 Echo命令用法总结: echo 选项列表 选项 描述 -n

shell 编程for循环总结

shell编程for循环总结 在shell编程中,循环的执行是将某代码段重复运行多次,常用循环有for.while和until循环,其中for循环经常用于有限次循环,for循环的语法结构有如下两种: 第一种:shell传统for循环语法结构 for 变量名 in 变量取值列表:do 指令- done 其中取值列表通常又有5种方式: (1)直接给出列表,列表中间用空格隔开 [[email protected] ~]#for i in 1 3 5;do echo $i;done 1 3 5 (2)整

Linux Shell编程中的特殊符号

本文是shell编程系列的第四篇,集中介绍了bash编程可能涉及到的特殊符号的使用.学会本文内容可以帮助你写出天书一样的bash脚本,并且顺便解决以下问题: 输入输出重定向是什么原理? exec 3<> /tmp/filename是什么鬼? 你玩过bash的关联数组吗? 如何不用if判断变量是否被定义? 脚本中字符串替换和删除操作不用sed怎么做? " "和' '有什么不同? 正则表达式和bash通配符是一回事么? 这里需要额外注意的是,相同的符号出现在不同的上下文中可能会

shell编程continue break 函数的return

跳出循环和函数返回值 一.退出循环 在shell编程中,通常退出循环有两种方法: contine:是结束本次执行的循环,默认是contine 1,当contine 3 时,则表示进入第3层循环: break:是跳出本次循环,默认是break 1, 当break 2 时,则表示退出第二层循环,进入第3层循环: 因此在循环中:contine n = break n-1 [[email protected] ~/test]#vim for.sh #!/bin/bash for i in {1..3};

linux 基础与shell编程[笔记]

linux 基础与shell编程 linux 系统知识 linux是一个OS ,也是一个完全免费 开源 自由软件 linux 1991   荷兰大学生课程设计   unix GPL协议 GPL:General Public License 是一份GNU(完全自由软件操作系统)是一个广泛使用的自由软件许可证条款 常见的linux发行版本: Debian:Debian为一款提供您安装在计算机上使用的操作系统 (OS).操作系统就是能让您的计算机工作 的一系列基本程序和实用工具.由于 Debian 采

2017-12-5Linux基础知识(15)shell编程

shell编程是在Linux的基础知识中所必须掌握的语言,它也是一个命令的集合,如果学会的话,我们将会事半功倍,将重复的操作通过shell编程脚本来实现,减轻了一定的负担,那么现在就来讲一下shell编程的基础. 一.编程语言的分类 其实根据其语言的分类来讲,强类型的编程语言首先要编译成为该平台的二进制程序文件所能运行,当程序文件可以运行时,编译器就不在参与,而在弱类型的编程语言当中,使用解释器将源代码边解释边执行,那么相当于前者来说,其执行的速度比后者要快得多,但是如果编译完成之后有问题的话,

Shell编程进阶篇(完结)

1.1 for循环语句 在计算机科学中,for循环(英语:for loop)是一种编程语言的迭代陈述,能够让程式码反复的执行. 它跟其他的循环,如while循环,最大的不同,是它拥有一个循环计数器,或是循环变数.这使得for循环能够知道在迭代过程中的执行顺序. 1.1.1 shell中的for循环 shell中的for 循环与在c中不同,它包含三种形式:第一种结构是列表for 循环;第二种结构就是不带列表的for循环:第三种就类似于C语言. ①   列表for循环(常用) #!/bin/bash