小型自动化运维--expect脚本

  1. 云栖社区>
  2. 博客>
  3. 正文

小型自动化运维--expect脚本

技术小胖子 2017-11-02 18:02:00 浏览408
展开阅读全文

小型自动化运维--expect脚本



expect可以让我们实现自动登录远程机器,并且可以实现自动远程执行命令。知道用户名和密码或者是使用密钥验证都可以使用,下面介绍expect 脚本实现登陆和远程命令:


  • 安装ssh包



# yum install -y expect openssh-clients 【依赖 ssh ,通信的机器都要安装 openssh-clients】


  • 编写脚本


# vim /usr/local/sbin/1.expect

#! /usr/bin/expect

set host "192.168.8.120"

set passwd "wtf"

spawn ssh root@$host

expect {

"yes/no" { send "yes\r"; exp_continue}

"password:" { send "$passwd\r" }

}

interact


  • 脚本解释

#! /usr/bin/expect

set host "192.168.8.120" #这个ip指:终端要远程的那台主机的地址

set passwd "wtf" #这个wtf是要远程的那台主机的密码

spawn ssh root@$host #spawn 是 expect 的语句,后面是登陆另外一台机器的命令

expect {  #进入 expect 语句模块

"yes/no" { send "yes\r"; exp_continue} #\r 在 expect 脚本里面代表回车,\n代表换行

"password:" { send "$passwd\r" }

}

interact  #expect 结束符,也可以使用expect eof,eof是end of file的缩写


  • 执行脚本


# chmod +x /usr/local/sbin/1.expect #授予执行权限


两种执行方式:

# /usr/local/sbin/1.expect 【执行命令,无需 /bin/sh ,因为这并不是 shell 脚本】

# /usr/bin/expect /usr/local/sbin/1.expect 【执行命令,使用 expect 】


  • 知识扩展

(1)expect 脚本和 shell 结构很像,但是并不一样。 expect 并不是 shell。


(2)expect 脚本里面有密码有用户名,比较不安全,在不会使用自动化运维工具如 puppet的情况下,先使用 expect 这样的自定义脚本的形式,实现自动化。


(3)expect适用于比较小型的公司,服务器不是太多的情况,如果服务器数量很多(几百台上千台),则需要借助puppet 自动化运维工具。


     本文转自品鉴初心51CTO博客,原文链接:http://blog.51cto.com/wutengfei/1917288,如需转载请自行联系原作者

网友评论

登录后评论
0/500
评论
技术小胖子
+ 关注