快捷搜索:  汽车  科技

简单运维的shell脚本(运维日记脚本利器-巧用expect自动交互)

简单运维的shell脚本(运维日记脚本利器-巧用expect自动交互)spawn ----- 后面跟要执行的命令或者程序expect <<EOF--表示接下来的语句作为expect命令的子语句进行,也可以单独把脚本定义为expect脚本来进行,但是这样就无法在这个脚本里执行sh或bash语法的shell脚本了,如:首先查看是否linux系统已安装所需要的包rpm -qa |grep expect介绍一下expect主要的用法(用scp和ssh为例)

我们常常会用到脚本执行一些自动化的计划,但是有许多命令都需要进行输入回馈比如scp和ssh,小伙伴们是不是也烦恼过这些问题,机器上没有装过ftp,想写个脚本scp个文件但是要输入密码,能不能让linux帮我们输密码呢?

看完本篇文章这些烦恼将烟消云散!

简单运维的shell脚本(运维日记脚本利器-巧用expect自动交互)(1)

简单运维的shell脚本(运维日记脚本利器-巧用expect自动交互)(2)

expect是一个自动化交互套件,主要应用于执行命令和程序时,系统以交互形式要求输入指定字符串,实现交互通信。

首先查看是否linux系统已安装所需要的包

rpm -qa |grep expect

简单运维的shell脚本(运维日记脚本利器-巧用expect自动交互)(3)

介绍一下expect主要的用法(用scp和ssh为例)

简单运维的shell脚本(运维日记脚本利器-巧用expect自动交互)(4)

简单运维的shell脚本(运维日记脚本利器-巧用expect自动交互)(5)

expect <<EOF--表示接下来的语句作为expect命令的子语句进行,也可以单独把脚本定义为expect脚本来进行,但是这样就无法在这个脚本里执行sh或bash语法的shell脚本了,如:

简单运维的shell脚本(运维日记脚本利器-巧用expect自动交互)(6)

spawn ----- 后面跟要执行的命令或者程序

expect{

} ----- 是expect的主程序内部命令

"yes/no" { send "yes\r";exp_continue;}----- 前面是识别控制台输出的命令,识别到yes/no 后面是接下来执行的命令,当识别到控制台输出yes/no,发送yes和回车\r代表回车 exp_continue代表在该项匹配之后还能继续进行匹配。

"password" { send "oracle\r" } ----- 同理。

expect eof ----- 代表expect程序执行结束

EOF ----- 代表子语句执行结束

set timeout xx ----- 代表超时时间,如果不设置默认10S 这样scp的时候有可能导致传输中断。

简单运维的shell脚本(运维日记脚本利器-巧用expect自动交互)(7)

简单运维的shell脚本(运维日记脚本利器-巧用expect自动交互)(8)

如上图,可以看到借助这个套件成功免密码传输scp到别的机器。

再试试ssh?然后做个导入试试。

简单运维的shell脚本(运维日记脚本利器-巧用expect自动交互)(9)

ssh到另一个机器成功!

简单运维的shell脚本(运维日记脚本利器-巧用expect自动交互)(10)

已经开始导入!

简单运维的shell脚本(运维日记脚本利器-巧用expect自动交互)(11)

结论:通过expect可以完成更多的自动计划,将脚本布在crontab下,甚至只要在一台机器上就可以完成对多台机器的维护计划,可以开始为所欲为了!

简单运维的shell脚本(运维日记脚本利器-巧用expect自动交互)(12)

美创运维中心数据库服务团队拥有Oracle ACE 1人、OCM 10余人、数十名Oracle OCP、MySQL OCP、红帽RHCA、中间件weblogic、tuxedo认证、达梦工程师 ,著有《Oracle DBA实战攻略》,《Oracle数据库性能优化方法和最佳实践》,《Oracle内核技术揭秘》等多本数据运维优化书籍。目前运维各类数据库合计2000余套,精通Oracle、MySQL、SQLServer、DB2、PostgreSQL、达梦等主流商业和开源数据库。并成为首批国内达梦战略合作伙伴之一,拥有海量经验和完善的人员培养体系。并同时提供超融合,私有云整体解决方案。

简单运维的shell脚本(运维日记脚本利器-巧用expect自动交互)(13)

猜您喜欢: