expect传入参数和程序执行命令不成功问题

本文介绍了expect关键字的使用,包括send、expect、spawn和interact。强调了向expect脚本传参时的注意事项,指出第0个参数并非脚本名。同时,讨论了在程序中执行expect不成功的情况,建议避免在程序中使用interact,因为它适用于终端交互而非程序环境。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.expect 关键字

  • send: 向进程发送字符串,用于模拟用户的输入。注意一定要加\r回车
  • expect: 从进程接收字符串
  • spawn: 启动进程(由spawn启动的进程的输出可以被expect所捕获)
  • interact: 用户交互

2.如何向expect脚本传入参数

set <变量名称> [lindex $argv <param index>]

注意下标从0开始,即0是第一个参数,不是脚本名称,这个和shell不同

#!/usr/bin/expect
set host [lindex $argv 0]  
set port [lindex $argv 1]  
set user [lindex $argv 2]  
set passwd [lindex $argv 3]  

3.程序中执行expect不成功

不要使用interact,如果在终端里执行expect,加上interact是没有问题的,但是在程序中执行命令,则不行;

spawn scp -r -P $port /root/dash/tool $user@$host:/tmp/
expect "*password:"
send "$passwd\r"
#interact
expect eof
exit

参考《Linux Expect 简介和使用实例》

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值