码迷,mamicode.com
首页 > 其他好文 > 详细

Expect交互自动化

时间:2019-11-01 11:18:11      阅读:104      评论:0      收藏:0      [点我收藏+]

标签:控制台   用户名   输出   user   标准输入   col   发送   bin   inux   

expect功能

Linux下运行命令、脚本或程序时,经常需要从终端输入某些命令继续运行的指令,这些输入都需要人为的手工干预。

expect可以根据程序的提示,模拟标准输入提供给程序,从而实现自动化交互执行。一般位于 /usr/bin/ecpect 。

expect 的四个命令:

       send : 用于向进程发送字符串

       expect : 从进程接收字符串

       spawn : 启动一个新的进程

       interact : 退出自动化,进入人工交互

ssh登录脚本示例:

#!/usr/bin/expect

# 设置超时时间,单位为秒,默认情况下是10秒;-1不会超时
set timeout 30

# 设置主机IP、用户名及密码
set host "101.200.241.109"
set username "root"
set password "123456"

# spawn是进入expect环境后才可以执行的expect内部命令,直接在shell下执行是找不到spawn命令的;它主要的功能是给ssh运行进程加个壳,用来传递交互指令
spawn ssh $username@$host

# expect也是expect的一个内部命令,这个命令的意思是判断上次输出结果里是否包含“password”的字符串,如果有则立即返回;否则就等待一段时间后返回,这里等待时长就是前面设置的30秒
expect "*password*" {send "$password\r"}

# 执行完成后保持交互状态,把控制权交给控制台,进行人工交互;如果没有这一句登录完成后会退出,而不是留在远程终端上
interact

 

  

Expect交互自动化

标签:控制台   用户名   输出   user   标准输入   col   发送   bin   inux   

原文地址:https://www.cnblogs.com/tongyishu/p/11775765.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!