2018-7-19

20.27 分发系统介绍
20.28 expect脚本远程登录
20.29 expect脚本远程执行命令
20.30 expect脚本传递参数



20.27 分发系统介绍

我们的一个网站在很多台服务器上跑着,假设这个网站的后端是使用PHP编写的,那么当这个后端的PHP代码需要更新或扩展的时候,要如何将这些更新、扩展的代码全部都发布到这些服务器上?

所以分发系统就是用来完成以上这个需求的,分发系统需要完成的事情就是将需要上线的代码分发到这些线上服务器中。我们现在要做的就是实现这个分发系统,实现这个系统需要用到两个主要的东西就是shell和expect,通过shell结合expect可以编写一个简单的分发系统







20.28 expect脚本远程登录

yum install -y expect  安装expect


自动远程登录

 #! /usr/bin/expect

set host "ip地址" 

set passwd "123456"

spawn ssh root@$host

expect {

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

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

}

interact  //需要停留再远程机器上,不加会直接退出来

image.png

成功登陆





20.29 expect脚本远程执行命令


 自动远程登录后,执行命令并退出

#!/usr/bin/expect

set user "root"

set passwd "123456"

spawn ssh $user@ip地址


expect {

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

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

}

expect "]*"

send "touch /tmp/12.txt\r"

expect "]*"

send "echo 1212 > /tmp/12.txt\r"

expect "]*"

send "exit\r"


比较两个脚本:

1脚本:登陆,exp脚本结束

2脚本:登陆完后还需要进行几条命令,最后退出出来






20.30 expect脚本传递参数

传递参数

#!/usr/bin/expect


set user [lindex $argv 0]  //第一个参数

set host [lindex $argv 1]  //第二个参数

set passwd "123456"

set cm [lindex $argv 2]

spawn ssh $user@$host


expect {

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

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

}

expect "]*"

send "$cm\r"

expect "]*"

send "exit\r"


执行多条命令, 用;隔开



猜你喜欢

转载自blog.51cto.com/13646170/2147836