常用的几种脚本文件有:except脚本 bash脚本 python脚本 (解释性语言,无需编译,即可运行)
#!/usr/bin/except
except脚本,Expect是一个免费的编程工具语言,用来实现自动和交互式任务进行通信,而无需人的干预。
#! /bin/bash
通过/usr/bin/bash运行程序,其指定了程序的具体位置,在某些情况下更安全,因为它限制了代码注入的可能。
#! /usr/bin/env bash
通过/usr/bin/env运行程序,用户不需要去寻找程序在系统中的位置(因为在不同的系统,命令或程序存放的位置可能不同),程序的位置存放在$PATH中;
python脚本文件
bash语法:
rsync: 用于从一个位置到另外一个位置同步文件和文件夹。备份的地址可以是本地也可以是远程 rsync -av –exclude=[…] […..] […..]
sed: 逐行读取文件的内容,读到就执行相应的操作(主要用于替换文件中的字符串)
echo: 输出字符串
find: 查找文件 find 目录 -name “文件名”
grep: 以行为单位读取文本并使用正则表达式进行匹配,匹配成功后打印出该行文本 grep [option] “string_to_find” filename
grep常见选项:
(1)-i:忽略搜索字符串的大小写
(2)-v:取反,即输出不匹配的那些文本行
(3)-n:输出行号
(4)-l:输出能够匹配模式的文件名,相反的选项为-L
(5)-q:静默输出
(6)-c:计算匹配成功的行数
(7)-o:输出匹配到的文本部分的个数
(8)-e:该选项加上正则表达式就是一个需要匹配的模式
(9)-r:grep的参数filename为目录时可以加上本选项表示递归搜索
(10)–include:指定需要搜索的文件
(11)–exclude:排除需要搜索的文件
(12)–exclude-dir:排除需要搜索的目录
shell中的特殊字符:
$ 美元符号。用来表示变量的值。如变量NAME的值为Mike,则使用$NAME就可以得到“Mike”这个值。
# 井号。除了做为超级用户的提示符之外,还可以在脚本中做为注释的开头字母,每一行语句中,从#号开始的部分就不执行了。
“” 双引号。shell不会将一对双引号之间的文本中的大多数特殊字符进行解释,如#不再是注释的开头,它只表示一个井号“#”。但$仍然保持特殊含义。(在双引号中的$加变量名,即:$PARAM_NAME,依然会转换成变量的值。),双引号对于某些特殊符号是不起作用的, 例如:”,$,,`(反引号)。双引号和单引号不能嵌套。即:echo ‘””’ 输出””, echo “’’” 输出’’
‘’ 单引号。shell不会将一对单引号之间的任何字符做特殊解释。(在双引号中的$加变量名,即:$PARAM_NAME,不会转换成变量的值。)
“ 倒引号。命令替换。在倒引号内部的shell命令首先被执行,其结果输出代替用倒引号括起来的文本,不过特殊字符会被shell解释。
斜杠。用来去掉在shell解释中字符的特殊含义。在文本中,跟在后面的一个字符不会被shell特殊解释,但其余的不受影响。
[]中括号, 主要是用来测试条件的,通常放在if语句的后面。 中括号本身不会在测试语句执行后消失。
{}大括号,主要是和$符号配合,作为字符串连接来使用。echo ${HOME}ismydir (结果:/home/xiongguoanismydir)
except语法:
set: 设置参数值 set timeout 30
spwan: 是进入expect环境后才可以执行的expect内部命令,使用前必须要装except。
它主要的功能是给ssh运行进程加个壳,用来传递交互指令。 spawn ssh -l username 192.168.1.1
except: 是expect的内部命令,用来判断上次输出结果里是否包含“password:”的字符串,如果有则立即返回,否则就等待一段时间后返回,这里等待时长就是前面设置的30秒 expect “password:”
send: 执行交互动作,与手工输入密码的动作等效 send “ispass”
interact: 执行完成后保持交互状态,把控制权交给控制台,这个时候就可以手工操作了
$argv: 参数数组,expect脚本可以接受从bash传递过来的参数.可以使用[lindex $argv n]获得,n从0开始,分别表示第一个,第二个,第三个….参数
参考网址:https://www.cnblogs.com/chengjian-physique/p/11768641.html
最新评论