Expect概述shell
yum install expect -y 安装expect服务
Expect基本命令
1.send:向进程发送字符串,用于模拟用户的输入数组
expect “password” {send “mypassword”;}
多分支语法结构bash
expect { "aaa"{send "AAA\r"} "bbb"{send "BBB\r"} "ccc"{send "CCC\r"} }
示例:
1.利用expect 完成ssh登陆过程
(1)直接执行服务器
#!/usr/bin/expect set timeout 60 #环境设置 log_flie test.log log_user 1 #变量定义 set hostname [lindex $argv 0] set password [lindex $argv 1] #启动spawn spawn ssh root@$hostname #匹配条件 expect { "(yes/no)" {send "yes\r";exp_continue} "password" {send "$password\r"} } #权限转交控制台 interact
(2)嵌入执行运维
#!/bin/bash hostname=$1 password=$2 /usr/bin/expect<<-EOF spwan ssh root@${hostname} expect{ "(yes/no)" {send "yes\r";exp_continue} "*password" {send "password\r"} } expect "*]#" send "exit\r" expect eof EOF
2.建立用户tom,密码tom123ssh
#!/bin/bash user=$1 password=$2 useradd=$user expect<<-EOF spawn passwd $user expect { "New password:" send "${password}\r" "Retype new password:" send "${password}\r" } ecpect eof EOF