zoukankan      html  css  js  c++  java
  • Shell编程实例

    一、简介

    从程序员的角度来看, Shell本身是一种用C语言编写的程序,从用户的角度来看,Shell是用户与Linux操作系统沟通的桥梁。用户既可以输入命令执行,又可以利用 Shell脚本编程,完成更加复杂的操作。在Linux GUI日益完善的今天,在系统管理等领域,Shell编程仍然起着不可忽视的作用。深入地了解和熟练地掌握Shell编程,是每一个Linux用户的必修课之一。

    Linux的Shell种类众多,常见的有:Bourne Shell(/usr/bin/sh或/bin/sh)、Bourne Again Shell(/bin/bash)、C Shell(/usr/bin/csh)、K Shell(/usr/bin/ksh)、Shell for Root(/sbin/sh),等等。不同的Shell语言的语法有所不同,所以不能交换使用。每种Shell都有其特色之处,基本上,掌握其中任何一种就足够了。在本文中,我们关注的重点是Bash,也就是Bourne Again Shell,由于易用和免费,Bash在日常工作中被广泛使用;同时,Bash也是大多数Linux系统默认的Shell。

     

    二、编程实例

     

    程序1:批量并行telnet

    在网络测试过程中,我们需要从某台服务器telnet其他很多服务器的某个端口,如22端口,如果能够批量并行的执行telnet对端端口,将大大提高测试效率,利用Shell编程可实现这一功能。

    #文件结构
    test10-was%tree
    .
    |-- ip.list                #测试ip列表
    |-- telnet_port.sh         #测试Shell脚本
    |-- telnetAlive.txt        #连通结果集        
    |-- telnetNotAlive.txt     #未连通结果集
    `-- telnetResult.txt       #日志
    #文件名:ip.list
    #功能:存储待测试ip列表
    #格式如下
     
    10.87.30.10
    10.87.30.11
    10.87.30.12
    10.87.30.13
    10.87.30.14     #此处需下空一行,并再次书写最终ip
    
    10.87.30.14
    image
    #文件名:telnet_port.sh
    #功能:网络测试
    
    #!/bin/bash
    
    rm telnetResult.txt >/dev/null 2>&1
    rm telnetAlive.txt >/dev/null 2>&1
    rm telnetNotAlive.txt >/dev/null 2>&1
    
    
    TestPort=30000    #要测试的端口号
    
    for i in $(cat ip.list)
    do (telnet $i $TestPort<<EOF>>telnetResult.txt &)>>telnetResult.txt 2>&1
    sleep 1
    quit
    EOF
    done
    
    cat telnetResult.txt | grep -B 1 ] | grep [1-9] | awk '{print $3}' | cut -d '.' -f 1,2,3,4 > telnetAlive.txt
    cat ip.list telnetAlive.txt | sort | uniq -u > telnetNotAlive.txt

    运行:

    image

  • 相关阅读:
    Hufman编码实现运用1 (原理不描述)
    E
    1178: [Apio2009]CONVENTION会议中心
    1071: [SCOI2007]组队
    #333. 【NOIP2017】宝藏
    CF 96 D. Volleyball
    CF 987 D. Fair
    qbxt的题:运
    qbxt的题:找一个三元环
    4361: isn
  • 原文地址:https://www.cnblogs.com/274914765qq/p/4375700.html
Copyright © 2011-2022 走看看