一、简介

从程序员的角度来看, 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
#文件名: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

运行:

Shell编程实例的更多相关文章

  1. Linux下shell编程实例

    1. 推断一文件是不是块或字符设备文件.假设是将其复制到 /dev 文件夹下 read -p "input a file:" filename if [ -b $filename ...

  2. 【转】linux shell编程实例总结

    查找当前目录中所有大于500M的文件,把这些文件名写到一个文本文件中,并统计其个数 find ./ -size +500M -type f | tee file_list | wc 在目录/tmp下找 ...

  3. shell编程实例2

    1.vim  read_PERSON.sh 2. #!/bin/bash echo "What is your name?" read PERSON echo "Hell ...

  4. shell编程实例1

    1.vim hello.sh 2. #!bin/bash echo "hello world!" 3.chmod +x  hello.sh 4.source hello.sh ls ...

  5. shell及编程实例

    1.shell简介 1) 概念--命令解释器 2) 常见shell bash linux标准shell sh 早期shell,较简单 csh ksh tcsh unix  shell vi  /etc ...

  6. Linux Shell编程与编辑器使用详解

    <Linux Shell编程与编辑器使用详解> 基本信息 作者: 刘丽霞 杨宇 出版社:电子工业出版社 ISBN:9787121207174 上架时间:2013-7-22 出版日期:201 ...

  7. [ SHELL编程 ] shell编程中数值计算方法实例

    SHELL编程中经常会涉及到数值计算,有时候对于这些计算命令使用场景容易忘记或者混淆,这里针对常用的命令做个总结.主要包括let.bc.expr.(())等. 1.let 使用格式:let 表达式,表 ...

  8. [ SHELL编程 ] echo和printf使用实例

    本文主要描述Linux系统中echo和printf命令的使用方法,包括命令参数的含义.使用技巧. 1.echo    了解一个命令我们首先要知道它能做什么,它有哪些参数,参数的含义,可以实现我们哪方面 ...

  9. shell编程:定义简单标准命令集

    shell是用户操作接口的意思,操作系统运行起来后都会给用户提供一个操作界面,这个界面就叫shell,用户可以通过shell来调用操作系统内部的复杂实现,而shell编程就是在shell层次上进行编程 ...

随机推荐

  1. spark 存储管理机制

    累加器 -- Accumulators 广播变量--Broadcast Variables 思考 回顾 存储管理模块架构--从架构上来看 存储管理模块架构--通信层 存储管理模块架构--存储层 存储管 ...

  2. msq_table's methods2

    -- 删除数据 自增长id被占用 -- 清楚所有数据并重置id 1 truncate table name; -- 主键(唯一) id int primary key; -- 主键内容不能重复,不能为 ...

  3. C++官方文档-静态成员

    #include <iostream> using namespace std; class Dummy { public: static int n; int x; Dummy() : ...

  4. 关于THINKPHP5模型关联的初步理解

    初步理解的意思是,使用最常用的关联模型,然后可以正常运行 还是打个比方 文章表  和文章分类表 一个文章分类可以有多个文章  所以  文章分类模型和文章建立 hasMany的关联 而文章和文章分类表则 ...

  5. 位运算骚操作 Part 2

    ▶ 计算 unsigned int v 的以 2 为底的对数,结果放入 unsigned int r . // 方法零 #pragma unroll ;v; r++, v >>= ); / ...

  6. Selenium Webdriver——操作隐藏的元素

    有时候我们会碰到一些元素不可见,这个时候selenium就无法对这些元素进行操作了.例如,下面的情况: 页面主要通过“display:none”来控制整个下拉框不可见.这个时候如果直接操作这个下拉框, ...

  7. MOCK 基本使用例子

    package com.icil.esolution.orders; import static org.springframework.test.web.servlet.request.MockMv ...

  8. 编写一个基于Soap DataModule的三层数据库应用

    服务器端:建立一个Web App Debugger executable类型,不需要接口,添加一个SoapData Module,放上AdoCon,AdoDataSet,DataSetProvider ...

  9. as2 fla 关于影片在时间轴的问题

    多帧上面放着没实例名而且里面内容一致的影片,主要一开始读取了,那么跳帧的时候.会自动获取当前帧上的相同内容的影片. 但如果内容不一致的影片,那么在跳帧后,不会获取当前的影片,旧的影片也无法获取.只在当 ...

  10. 切换svn登录账户

    右键-->TortoiseSVN-->设置 找到:点击已缓存数据 在认证数据一栏点击:清空