zoukankan      html  css  js  c++  java
  • 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来解析脚本,所以没有提示错误!
  • 相关阅读:
    Codeforces Round #455 (Div. 2) A. Generate Login【贪心】
    Codeforces Round #315 (Div. 2)【贪心/重排去掉大于n的元素和替换重复的元素】
    CSU-ACM2018寒假集训选拔-入门题
    Codeforces Round #454 C. Shockers【模拟/hash】
    Nowcoder Girl 参考题解【待写】
    2017吉首大学新生赛
    P1450 包裹快递 RP+14【二分】
    NewCode
    2017年浙江工业大学大学生程序设计迎新赛决赛题解
    Codeforces Round #451 (Div. 2) B. Proper Nutrition【枚举/扩展欧几里得/给你n问有没有两个非负整数x,y满足x·a + y·b = n】
  • 原文地址:https://www.cnblogs.com/11hwu2/p/3713436.html
Copyright © 2011-2022 走看看