linux-expect

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux-expect相关的知识,希望对你有一定的参考价值。

expect基础

expect常用的四个命令:

spawn
启动新的进程

expect
从进程接收字符串

send 用于向进程发送字符串

interact 允许用户交互

详细解释:

spawn命令用来启动新的进程,spawn后的sendexpect命令都是和使用spawn打开的进程进行交互。

send命令接收一个字符串参数,并将该参数发送到进程。

expect命令和send命令相反,expect通常用来等待一个进程的反馈,我们根据进程的反馈,再发送对应的交互命令。

interact命令用的其实不是很多,一般情况下使用spawnsendexpect命令就可以很好的完成我们的任务;但在一些特殊场合下还是需要使用interact命令的,interact命令主要用于退出自动化,进入人工交互。比如我们使用spawnsendexpect命令完成了ftp登陆主机,执行下载文件任务,但是我们希望在文件下载结束以后,仍然可以停留在ftp命令行状态,以便手动的执行后续命令,此时使用interact命令就可以很好的完成这个任务。

#!/usr/bin/expect 
#!/usr/bin/bash 

#ssh连接的用户名 
set username ***

#ssh连接的地址 
set host 80.7.3.1 

#ssh连接远程目录 
set dirname "/log/configsave_dir" 

#目标文件名 
set filename "`date +%Y%m%d`.tar.gz" 

#ssh连接的端口号 
set port 22 

#ssh连接的密码 
set password ***

#ssh连接的超时时间 
set timeout -1 


#spawn ssh [email protected]$host -p $port 
#echo $filename 
spawn scp [email protected]$host:$dirname/$filename /opt 
expect "*password:" 
send "$password\r" 
interact


以上是关于linux-expect的主要内容,如果未能解决你的问题,请参考以下文章

微信小程序代码片段

VSCode自定义代码片段——CSS选择器

谷歌浏览器调试jsp 引入代码片段,如何调试代码片段中的js

片段和活动之间的核心区别是啥?哪些代码可以写成片段?

VSCode自定义代码片段——.vue文件的模板

[转]expect实现ssh自动交互