shell脚本

1.4.2 linux和高并发-shell编程-文本流及重定向

|▌冷眼眸甩不掉的悲伤 提交于 2020-02-26 12:21:27
目录 1.写在前面 2.文本流&重定向 3.输出重定向 4.输入重定向 1.写在前面 我们上次简单提了一下bash,bash还有一些比较重要的内容,我们想放到后面讲管道知识的时候在再重点提及。这次呢先讲一下 文本流和重定向 的知识。我个人认为,脚本编程是非常重要的一个环节,是无法替代的,自动化一直以来是人们追求的梦想。 2.文本流&重定向 流和我们java中文件流差不多,有输入有输出。那么重定向是什么呢?web中有转发和重定向,和那个是一回事。 fd是文件描述符 , 可以实现重定向操作 。进到fd里面, 最后那个0表示服务端号,再连接一个xshell,就会变成1. 查进程号: 3.输出重定向 任何一个命令都有012这样一个标准输入输出方式,重定向是什么意思:重定向是人为的干预012这样一个输出位置。 比如:本来输出到控制台,现在重定向到一个文件中。 一个>表示覆盖原来的文件,>>表示不覆盖,继续再下面追加文件内容 。 正常输出输出到一个文件里面: 错误输出输出到一个文件里面: 正确的、错误的分开输出到各自的文件: 检索顺序是先检索是否有这个目录,然后输出是从左边到右边。所以下面这个显示是正常输出,因为先检测是否有目录,报错误输出,打印到文件。然后正常输出将其覆盖掉。 把错误输出和标准输出合并到一个文件:( &> 和 >& 这两种写法都可以 ) 请大家注意一下,1 2

python中执行shell脚本

﹥>﹥吖頭↗ 提交于 2020-02-26 03:09:28
最近有个需求就是页面上执行shell命令,第一想到的就是os.system, 代码如下: os.system('cat /proc/cpuinfo') 但是发现页面上打印的命令执行结果 0或者1,当然不满足需求了。 尝试第二种方案 os.popen() 代码如下: (status, output) = commands.getstatusoutput('cat /proc/cpuinfo') print status, output 通过 os.popen() 返回的是 file read 的对象,对其进行读取 read() 的操作可以看到执行的输出。但是无法读取程序执行的返回值) 尝试第三种方案 commands.getstatusoutput() 一个方法就可以获得到返回值和输出,非常好用。 代码如下: (status, output) = commands.getstatusoutput('cat /proc/cpuinfo') print status, output Python Document 中给的一个例子, 代码如下: >>> import commands >>> commands.getstatusoutput('ls /bin/ls') (0, '/bin/ls') >>> commands.getstatusoutput('cat /bin/junk')

信息安全系统设计基础第一周学习总结——20135308

雨燕双飞 提交于 2020-02-26 02:51:59
本周,我学习了Linux的历史与一些著名的开发者。 操作系统始于二十世纪 50 年代,当时有一个项目叫做" Multics ",它的技术在当时很创新,然而它的开发过程并不顺利,当时参加该项目的一个开发团体-贝尔实验室退出了这个项目后开发了他们自己的一个操作系统—— UNIX。 UNIX 最初免费发布并因此在大学里受到欢迎,但是后来变得商业化,价格高昂,使用的人很少。1991 年 10 月,Linus Torvalds在赫尔辛基大学接触 UNIX ,他希望能在自己的电脑上运行一个类似的操作系统。很快他就开始了自己的开发工作,他第一次发行的版本很快吸引了一些黑客,他们的加入使它很快就具有了许多吸引人的特性。他经常改写内核,使有些程序能更容易在 Linux 上运行,包括 C 编译器,都来自于自由软件基金 GNU 项目。 1992-1993 年,Linux 内核具备了挑战 UNIX 的所有本质特性,包括 TCP/IP 网络,图形界面系统(X window),Linux 同样也吸引了许多行业的关注。一些小的公司开发和发行Linux,有几十个 Linux 用户社区成立。1994 年,Linux 杂志也开始发行。 与Windows相比,Linux是免费的,平台更加安全,大都为开源自由软件,用户可以修改定制和再发布,但是部分软件质量和体验欠缺,但是可以定制,更具自由行,可学习性。

Shell编程之sed工具

核能气质少年 提交于 2020-02-26 01:22:31
一、sed介绍 1.sed用来做啥? 2.sed如何处理文件? 二、sed使用方法介绍 1.命令行格式 1)语法格式 2)举例说明 2.脚本格式 1)用法 2)注意事项 3)举例说明 3.补充扩展总结 三、课堂练习 四、课后实战 一、sed介绍 1. sed用来做啥? sed是Stream Editor(流编辑器)的缩写,简称流编辑器;用来==处理文件==的。 2. sed如何处理文件? sed是==一行一行读取==文件内容并==按照要求==进行==处理==,把处理后的结果==输出到屏幕==。 首先sed读取文件中的一行内容,把其保存在一个==临时缓存区中==(也称为模式空间) 然后==根据需求==处理临时缓冲区中的行,完成后把该行==发送到屏幕上== 总结: 由于sed把每一行都存在临时缓冲区中,对这个 副本 进行编辑,所以==不会直接修改原文件== Sed主要用来自动编辑一个或多个文件;简化对文件的反复操作,对文件进行过滤和转换操作 二、sed使用方法介绍 sed常见的语法格式有两种,一种叫==命令行==模式,另一种叫==脚本==模式。 1. 命令行格式 1)语法格式 sed [options] == ' ==处理动作 =='== 文件名 常用选项 选项 说明 备注 -e 进行多项(多次)编辑 ==-n== 取消默认输出 不自动打印模式空间 ==-r== 使用扩展==正则表达式

Shell编程之awk工具

风格不统一 提交于 2020-02-26 01:22:19
一、awk介绍 1.awk概述 2.awk能干啥? 二、awk使用方式 1.==命令行模式使用== 1)语法结构 2)常用选项介绍 3)=='==命名部分说明=='== 2.脚本模式使用 1)脚本编写 2)脚本执行 三、 awk内部相关变量 1、==常用内置变量举例== 2、内置变量分隔符举例 四、 awk工作原理 五、awk使用进阶 1.格式化输出print和printf 2.awk变量定义 3.awk中BEGIN...END使用 1)举例说明1 2)举例说明2 4.awk和正则的综合运用 1)举例说明 5.课堂练习 6.awk的脚本编程 1)流程控制语句 2)循环语句 7.awk算数运算 六、awk统计案例 1、统计系统中各种类型的shell 2、统计网站访问状态 3、统计访问网站的每个IP的数量 4、统计网站日志中PV量 一、awk介绍 1. awk概述 awk是一种==编程语言==,主要用于在linux/unix下对==文本和数据==进行处理,是linux/unix下的一个工具。数据可以来自标准输入、一个或多个文件,或其它命令的输出。 awk的处理文本和数据的方式: ==逐行扫描==文件 ,默认从第一行到最后一行,寻找匹配的==特定模式==的行,并在这些行上进行你想要的操作。 awk分别代表其作者姓氏的第一个字母。因为它的作者是三个人,分别是Alfred Aho、Brian

Shell编程之case语句与函数

寵の児 提交于 2020-02-26 01:21:59
一、case语句 1.语法结构 2.应用案例 1)脚本传不同值做不同事 2)根据用户需求选择做事 二、函数 1.什么是函数? 2.如何定义函数? 3.函数如何调用? 1)当前命令行调用 2)定义到用户的环境变量中 3)脚本中调用 三、综合案例 1.任务背景 2.具体要求 3.综合分析 4.落地实现 四、正则表达式 1.正则表达式是什么? 2.正则能干什么? 3.正则当中名词解释 4.第一类正则表达式 1)正则中普通常用的元字符 2)正则中其他常用元字符 3)扩展类正则常用元字符 5.第二类正则 6.正则表达式总结 五、正则元字符一栏表 六、正则练习作业 1.文件准备 2.具体要求 七、课后作业 脚本搭建web服务 一、case语句 case语句为多重匹配语句 如果匹配成功,执行相匹配的命令 1. 语法结构 说明:pattern表示需要匹配的模式 case var in 定义变量;var代表是变量名 pattern 1) 模式1;用 | 分割多个模式,相当于or command1 需要执行的语句 ;; 两个分号代表命令结束 pattern 2) command2 ;; pattern 3) command3 ;; *) default,不满足以上模式,默认执行*)下面的语句 command4 ;; esac esac表示case语句结束 2. 应用案例 1)脚本传不同值做不同事

Shell编程之条件判断

混江龙づ霸主 提交于 2020-02-26 01:21:03
一、条件判断语法结构 条件判断相关参数 1)判断文件类型 2)判断文件权限 3)判断文件新旧 4)判断整数 5)判断字符串 6)多重条件判断 二、流程控制语句 基本语法结构 1)if结构 2)if...else结构 3)if...elif...else结构 4)层层嵌套结构 应用案例 1)判断两台主机是否ping通 2)判断一个进程是否存在 3)判断一个服务是否正常 4)判断用户是否存在 5)判断软件包是否安装 6)判断当前主机的内 一、条件判断语法结构 思考:何为真(==true==)?何为假(==false==)? ##1. ==条件判断语法格式== 格式1: == test == 条件表达式 格式2: [ 条件表达式 ] 格式3: [[ 条件表达式 ]] 支持正则 =~ 特别说明: 1)==[== 亲亲,我两边都有空格,不空打死你呦 ==]== :imp: 2)==[[== 亲亲,我两边都有空格,不空打死你呦 ==]]==:imp: 3) 更多判断,`man test`去查看,很多的参数都用来进行条件判断 2. 条件判断相关参数 1)判断文件类型 判断参数 含义 ==-e== 判断文件是否存在(任何类型文件) -f 判断文件是否存在==并且==是一个普通文件 -d 判断文件是否存在并且是一个目录 -L 判断文件是否存在并且是一个软连接文件 -b

Shell编程之循环语句

佐手、 提交于 2020-02-26 01:20:37
一、for循环语句 1.for循环语法结构 1)列表==循环 2)不带列表循环 3)类C风格的for循环 2.应用案例 1)脚本==计算==1-100奇数和 2)判断所输整数是否为质数 3)批量创建用户 4)批量创建用户 5)局域网内脚本检查主机网络通讯 6)判断闰年 二、while循环语句 1.while循环语法结构 2.应用案例 1)脚本计算1-50偶数和 2)脚本同步系统时间 三、until循环 1.until语法结构 2.应用案例 1)具体需求 2)思路 3)落地实现 一、for循环语句 1. for循环语法结构 1)列表==循环 列表for循环:用于将一组命令执行 ==已知的次数== 基本语法格式 for variable in {list} do command command … done 或者 for variable in a b c do command command done 举例说明 # for var in {1..10};do echo $var;done # for var in 1 2 3 4 5;do echo $var;done # for var in `seq 10`;do echo $var;done # for var in $(seq 10);do echo $var;done # for var in {0..10..2};do

Shell编程之嵌套循环

主宰稳场 提交于 2020-02-26 01:20:29
一、随机数 1.如何生成随机数? 2.实战案例 1)随机产生以139开头的电话号码 2)随机抽出5位幸运观众 3)批量创建用户(密码随机产生) 二、嵌套循环 1.应用案例 1)打印指定图案 2)落地实现1 3)落地实现2 三、阶段性补充总结 1.影响shell程序的内置命令 四、综合案例 1.实战案例1 1)具体需求 2)案例分析 3)落地实现 实战案例2 一、随机数 1. 如何生成随机数? 系统变量 : ==RANDOM== ,默认会产生0~32767的随机整数 前言: 要想调用变量,不管你是什么变量都要给钱,而且是美元:heavy_dollar_sign: 打印一个随机数 echo $RANDOM 查看系统上一次生成的随机数 # set|grep RANDOM RANDOM=28325 产生0~1之间的随机数 echo $[$RANDOM%2] 产生0~2之间的随机数 echo $[$RANDOM%3] 产生0~3之间的随机数 echo $[$RANDOM%4] 产生0~9内的随机数 echo $[$RANDOM%10] 产生0~100内的随机数 echo $[$RANDOM%101] 产生50-100之内的随机数 echo $[$RANDOM%51+50] 产生三位数的随机数 echo $[$RANDOM%900+100] 2. 实战案例 1)随机产生以139开头的电话号码

使用shell及python分别判断某个IP是否在白名单

本秂侑毒 提交于 2020-02-25 19:36:49
1、shell脚本如下: [root@mysql01 ~]# cat a.sh #!/bin/bash ############## 定义白名单列表 ############### white_list=( 192.168.20.2 192.168.20.3 192.168.20.4 192.168.20.5 ) ############# 定义脚本用法 ################ function USAGE(){ echo -e "\033[33m $0 的用法为: -i: 指定要进行判断的ip地址 \033[0m" } ############# 对脚本传参进行判断及变量赋值 ############## if [[ $# -eq 0 ]] || [[ $1 == '-h' ]] || [[ $1 == '--help' ]];then USAGE exit 0 fi while getopts ":i:" optname;do case "$optname" in "i") ip=$OPTARG ;; *) echo "该选项没有值!" USAGE exit 1 ;; esac done ########### 判断IP是否存在于白名单内 ################ if [[ ${white_list[@]} =~ $ip ]];then echo "$ip