网络安全之shell脚本与自动化

2020年6月27日11:48:31 发表评论

概述

什么是脚本?

 脚本,是使用一种特定的描述性语言,依据一定的格式编写的可执行文件,又称作宏或批处理文件。

什么是shell?

 命令解释器,负责接收用户输入的命令,进行解释将需要执行的操作传递给内核执行,并输出执行结果

当前系统所支持的shell有哪些?

 CentOS系统默认用户使用的shell为/bin/bash

 /etc/shells文件中保存了系统支持的shell种类

Bash

 Bourne again Shell是bsh的升级版也是应用最广泛的shell

编写shell脚本

可以使用任意编辑器编写如vim

vim /tmp/simple.sh 为了便于识别以sh结尾作为扩展名

#!/bin/bash  声明脚本运行环境
cd /boot
pwd
ll -h init*

赋予可执行权限

chmod a+x /tmp/simple.sh

执行脚本文件的几种方法

./simple.sh  在脚本所在目录执行
sh /tmp/simple.sh
source /tmp/simple.sh

脚本常用的工具

AWK是一个优良的文本处理工具,Linux及Unix环境中现有的功能最强大的数据处理引擎之一。

基本用法

awk -F: '{if(length($2)>3) print $1}' /etc/shadow

sort 文本内容排序

cat /etc/passwd|sort -t ':' -nk 3            从小到大,以冒号为分隔符,第三列。
cat /etc/passwd|sort -t ':' -nrk 3           从大到小

uniq 重复内容合并

通常配合sort一起使用

sort |uniq -c    显示每一项重复的次数

变量的作用

用来存放系统和用户需要的特定数值,变量赋值格式:变量名=变量值

 变量名:使用固定的名称,由系统预设或用户定义

 变量值:能够根据用户设置、系统环境的变化而变化

变量的类型

自定义变量:由用户自己定义、修改和使用

全局变量:在子shell中仍然能使用的变量

环境变量:由系统维护,用于设置工作环境

位置变量:通过命令行给脚本程序传递参数

预定义变量:Bash中内置的一类变量,不能直接修改

常见的变量类型

预定变量

由bash预先设定好的一类特殊变量

$#:表示位置参数的个数

$*:表示位置参数的内容

$$:当前进程的进程PID号

$?:前一条命令执行完后的返回状态0表示正确,非0表示异常

$0:当前执行的脚本或程序名称

位置变量

表示为 $n,n为1~9之间的数字

./脚本名称 $1 $2

例如./simple.sh one two three four five six

if语句结构

多分支结构语法

if 条件测试操作A
then 命令序列A
elif 条件测试操作B
then 命令序列B
else
命令序列C
fi

网络安全之shell脚本与自动化

循环语句

for循环语句结构

for 变量 in 取值列表
do
命令
done

网络安全之shell脚本与自动化

while语句结构

while 条件
do
命令
done

网络安全之shell脚本与自动化

case语句语法结构

case 变量 in
模式A)
命令A
;;
模式B)
命令B
;;
.....
*)
默认命令
esac

网络安全之shell脚本与自动化

函数的建立

鉴于命令内容在脚本中会多次使用相同命令组,可以将这些多次出现的命令组定义为一个函数 需要时直接调用函数

函数的建立语法

函数名(){
命令A
命令B
...
命令Z
[ return value ]
}

函数返回值,可以显示增加return语句;如果不加,则将最后一条命令运行结果作为返回值(一般为0,如果执行失败则返回错误代码)。 return后跟数值(0-255)

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: