Linux 命令--expect自动化交互程序

expect是Linux的自动化交互程序;expect从其他的交互式程序期望(expect)输出,同时对所期望的输出做出相应。

下面通过一段代码来说明expect常用的命令。现在我们想通过ssh命令远程登录一台机器, 同时在远程主机上执行命令ls。代码如下

  1 #! /usr/bin/expect
  2 set timeout 20
  3
  4 send_user "请输入用户名:\n"
  5 expect_user -re "(.*)\n"
  6 set username $expect_out(1,string)
  7
  8 send_user "请输入主机名或IP:\n"
  9 expect_user -re "(.*)\n"
 10 set host $expect_out(1,string)
 11
 12 stty -echo
 13 send_user "请输入密码:\n"
 14 expect_user -re "(.*)\n"
 15 set password $expect_out(1,string)
 16 stty echo
 17
 18 spawn ssh $username@$host
 19 expect {
 20         "*password" {send "$password\n";exp_continue}
 21         "#" {send "ls\n"}
 22         "timeout" {send_user "登录远程主机$username@$host超时!";exit}
 23 }
 24 interact

第1行#! /usr/bin/expect指明脚本的解释器,不同的系统略有不同;第二行set timeout 20设置命令expect的超时时间,单位为秒;第4~6行提示用户输入用户名,并将用户的输入存储在变量username中;第8~10提示用户输入主机或IP地址,并将用户的输入存储到变量host;第12~16行提示用户输入密码,并将用户的输入存储到变量password;第18行开启一个进程用于执行命令ssh $username@$host;第19~23行和命令ssh $username@$host交互;第24行将交互交给用户。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值