expect中的send、send_user和puts的区别

send会将expect脚本中需要的信息发送给spawn启动的那个进程,而send_user只是回显用户发出的信息,类似于shell中的echo而已。

如下例所示,使用send发送密码给spawn启动的进程,使用send_user发送提示信息回显给用户。

#!/usr/bin/env bash
username="xxxx"
password="xxxx"
host="47.105.xx.xxx"
/usr/bin/expect <<-  EOF
  # 在该语句开始执行后,expect开始捕获终端的输出信息,然后做出对应的操作
  spawn ssh ${username}@${host}
  expect {
    "Connection refused" {send_user "拒绝链接\n"}
    "yes/no*" {  send "yes\n"; exp_continue  }
    "password:" {send "${password}\n";}
  }
  expect "Permission denied" {send_user "\n密码错误\n";exit}
  expect EOF
EOF

puts在输出字符串的尾部自动添加换行符而send_user不会自动添加,除了换行符外,如果在Expect脚本中使用日志文件,则通过发送的语句send_user会将其放入日志文件,而通过发送的语句puts则不会。

大部分时候putssend_user可以互相取代,只要注意其中的不同即可。

====================================================================================================
作者:星木
欢迎任何形式的转载,但请务必注明出处。
限于本人水平,如果有不当之处,还请不吝赐教。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值