expext中相关命令
spawn:启动新的进程
send:用于向进程发送字符串
expect:从进程接收字符串
interact:允许用户交互
exp_continue:匹配多个字符串在执行动作后加此命令
expect:
单分支模式
expect "hi" {send "hi,too\n"}
多分支模式
expect {
"hi" {send "hi,too\n"}
"hehe" {send "hehe,too\n"}
"bye" {send "bye,too\n"}
}
spawn:
自动化传输文件
#!/usr/bin/expect
spawn scp /etc/fstab root@192.168.88.131:/data
expect {
"yes/no" { send "yes\n";exp_continue }
"password" { send "123456\n" }
}
expect eof
interact:
自动化登录
#!/usr/bin/expect
spawn ssh root@192.168.88.131
expect {
"yes/no" { send "yes\n";exp_continue }
"password" { send "123456\n" }
}
interact @@@@@允许用户交互
使用变量自动化登录
#!/usr/bin/expect
set ip 192.168.88.131
set uesr root
set passwd 123456
set timeout 10
spawn ssh $user@$ip
expect {
"yes/no" { send "yes\n";exp_continue }
"password" { send "$passwd\n" }
}
interact
使用位置参数自动化登录
#!/usr/bin/expect
set ip [lindex $argv 0]
set uesr [lindex $argv 1]
set passwd [lindex $argv 2]
set timeout 10
spawn ssh $user@$ip
expect {
"yes/no" { send "yes\n";exp_continue }
"password" { send "$passwd\n" }
}
interact
. /ssh.exp 192.168.88.131 root 123456