20.27 分发系统介绍

shell项目-分发系统-expect

20.28 expect脚本远程登录

1. 安装expect 

[root@aminglinux-128 ~]#  yum install -y expect
已加载插件:fastestmirror, langpacks
Determining fastest mirrors
 * base: mirrors.aliyun.com
 * extras: mirrors.huaweicloud.com
 * updates: mirrors.163.com

自动远程登录

2. 创建配置1.expect脚本(远程登录) 

[root@aminglinux-128 ~]# vim 1.expect

添加内容(自动远程登录hao2机器,并执行命令):

#! /usr/bin/expect
set host "192.168.193.127"
set passwd "123456"
spawn ssh root@$host
expect {
"yes/no" { send "yes\r"; exp_continue}
"password:" { send "$passwd\r" }
}
interact

3. 增加1.expect脚本x权限 

chmod a+x 1.expect

4. 执行1.expect脚本(远程登录) 

[root@aminglinux-128 ~]# ./1.expect
spawn ssh [email protected]
The authenticity of host '192.168.193.127 (192.168.193.127)' can't be established.
ECDSA key fingerprint is SHA256:uxHaWRc2lThYwxDrkf52bB9ATkoi/ar1cajntdh1vhI.
ECDSA key fingerprint is MD5:f7:34:8c:d3:2d:c8:0f:99:69:d1:e3:7d:35:5f:8e:33.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.193.127' (ECDSA) to the list of known hosts.
[email protected]'s password:
Permission denied, please try again.
[email protected]'s password:
Last failed login: Fri Sep 21 17:05:12 CST 2018 from 192.168.193.128 on ssh:notty
There was 1 failed login attempt since the last successful login.
Last login: Fri Sep 21 16:52:35 2018 from 192.168.193.1
[root@localhost ~]#

20.29 expect脚本远程执行命令

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

1. 远程hao2机器,创建/tmp/12.txt文件,追加重定向1212/tmp/12.txt文件 :

[root@aminglinux-128 ~]# vim 2.expect
#!/usr/bin/expect
set user "root"
set passwd "123456"
spawn ssh [email protected]
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"

2. 增加2.expect脚本x权限 

[root@aminglinux-128 ~]# chmod a+x 2.expect

3. 执行2.expect脚本 :

[root@aminglinux-128 ~]#  ./2.expect
spawn ssh [email protected]
[email protected]'s password:
Last login: Fri Sep 21 17:05:23 2018 from 192.168.193.128
[root@localhost ~]# touch /tmp/12.txt
[root@localhost ~]# echo 1212 > /tmp/12.txt

20.30 expect脚本传递参数

传递参数

1.

vim 3.expect
#!/usr/bin/expect
set user [lindex $argv 0]
set host [lindex $argv 1]
set passwd "admin"
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"

2. 增加3.expect脚本x权限 

[root@aminglinux-128 ~]# chmod a+x 3.expect

3. 执行3.expect脚本 :

远程登录指定用户名 主机ip 执行的多个命令(ls;w)