常用的几种脚本文件
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
常⽤的⼏种脚本⽂件
常⽤的⼏种脚本⽂件有: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\r"
interact: 执⾏完成后保持交互状态,把控制权交给控制台,这个时候就可以⼿⼯操作了
$argv: 参数数组,expect脚本可以接受从bash传递过来的参数.可以使⽤[lindex $argv n]获得,n从0开始,分别表⽰第⼀个,第⼆个,第三个....参数。