SHELL-expect

作者dmxsp

4月 29, 2024

1.expect介绍

借助Expect处理交互的命令,可以将交互 过程如:ssh登录,ftp登录等写在一个脚本上,使之自动化完成.尤其适用于需 要对多台服务器执行相同操作的环境中,可以大大提高系统管理人员的工作效率

2.expect中相关命令

spawn:启动新的进程
send:用于向进程发送字符串
expect:从进程接收字符串
interact:允许用户交互
exp_continue  匹配多个字符串在执行动作后加此命令
set timeout n:设置expect语句超时时间为n秒。-1为永不超时
exit:退出expect脚本
eof:expect执行结束 退出
set:定义变量
puts:输出变量
set name value:设置变量名为name,其值为value
set name [lindex $argv 0]:设置变量名为name,其值为 传入 expect脚本的第一个 参数 。第一个参数的索引值为0,第二个为1,依次类推
send exp_send:用于发送指定的字符串信息
send:向进程发送字符串
send_user :用来打印信息,相当于shell中的echo
exp_continue:执行完expect后的动作后,使expect不退出,继续往下匹配
expect eof:不允许用户交互,直接退出(这个用的会比interact多)

\r:回车,
\n:换行,

3.安装和使用

[root@shell /server/scripts]$ yum -y install expect

结尾方式

.exp 或者 .ex结尾

[root@shell ~]$ which expect
/usr/bin/expect

[root@shell ~]$ cat expect.ex
#!/usr/bin/expect
spawn ssh root@10.0.0.45
expect {
“yes/no” { send “yes\r”; exp_continue }
“password:” { send “1\n” };
}
interact

[root@shell ~]$ expect expect.ex
spawn ssh root@10.0.0.45
root@10.0.0.45’s password:
Last login: Wed Apr 24 16:48:03 2024 from 10.0.0.65
[root@master ~]$

作者 dmxsp

发表回复

您的电子邮箱地址不会被公开。