expect 实现交互(未完成)

简介:

expect介绍

expect命令是一个实现交互功能的软件套件,是基于TCL的脚本编程语言,在企业运维中,系统会以交互的形式要求运维人员输入指定的字符串,之后才能继续执行命令。例如:为用户设置密码时,一般情况下需要手工输入两次密码,比如使用ssh连接远程服务器时,第一次连和系统实现两次交互。

简单的说,expect用来自动实现与交互程序通信的,无需管理员手工干预


spawn启动指定进程>expect获取期待的关键字>send向指定进程发送字符>进程执行完毕,退出


expect  表达式 [动作]


expect自动交互的执行过程中,当使用spawn命令执行一个命令或程序之后,会提示某些交互信息,expect命令的作用就是获取spawn命令执行的信息,看看是否有事先指定的相匹配,一旦匹配上指定的内容就执行expect后面的动作。


#安装expect

1
[root@server1 ~] # yum install -y expect


#样例

#当需要ssh到一台主机时,会出现如下信息,显然这个是要人工输入,这里就可以用expect实现交互

1
2
3
4
[root@server1 ~] # ssh 192.168.174.134
The authenticity of host  '192.168.174.134 (192.168.174.134)'  can't be established.
ECDSA key fingerprint is f1:bb:26:4a:70:d0:66:7c:96:07:54:eb:ea:fc:06:1b.
Are you sure you want to  continue  connecting ( yes /no )?


#expect 脚本

1
2
3
4
5
6
7
8
9
10
[root@server1 ~] # cat ssh.sh 
#!/usr/bin/expect
spawn  ssh  root@192.168.174.135
expect  "yes/no"
send  "yes\r"
expect  "password:"
send  "redhat\r"
expect  "]#"
interact
[root@server1 ~] #


#运行脚本

1
2
3
4
5
6
7
8
9
10
11
[root@server1 ~] # expect ssh.sh 
spawn  ssh  root@192.168.174.135
The authenticity of host  '192.168.174.135 (192.168.174.135)'  can't be established.
ECDSA key fingerprint is 89:17:ab:61:5e:1b:30:29:3e:42:c8:0e:8d:ce:01: df .
Are you sure you want to  continue  connecting ( yes /no )?  yes
Warning: Permanently added  '192.168.174.135'  (ECDSA) to the list of known hosts.
root@192.168.174.135's password: 
Last failed login: Fri Jun 30 23:53:01 CST 2017 from 192.168.174.134 on  ssh :notty
There was 1 failed login attempt since the last successful login.
Last login: Fri Jun 30 23:52:37 2017 from 192.168.174.1
[root@KVM_2 ~] #


#可以看到当运行expect脚本时,遇到交互界面时,系统没有停留等待用户交互,而是自动完成交互


spawn 启动新的进程

expect 接受字符串

send   发送字符串(\r 回车)

interact 允许用户交互



(未完成,有空更)










本文转自 chaunceyjiang  51CTO博客,原文链接:http://blog.51cto.com/cqwujiang/1943526,如需转载请自行联系原作者
目录
相关文章
|
8月前
|
开发者
在用户关闭页面时,提示用户有内容未保存-论onbeforeunload事件的用法
在用户关闭页面时,提示用户有内容未保存-论onbeforeunload事件的用法
143 0
|
Shell 网络安全 数据安全/隐私保护
expect - 自动交互脚本
1. expect参数 expect教程中文版 expect说明 2. 启用选项 -c :执行脚本前先执行的命令,可多次使用。 -d :debug模式,可以在运行时输出一些诊断信息,与在脚本开始处使用 exp_internal 1 相似。
1471 0
|
网络安全 开发工具 Shell
|
Linux 数据安全/隐私保护 网络安全
|
Shell 网络安全 数据安全/隐私保护