linux - 期望程序从文件发送命令

标签 linux unix expect

如何使“expect”程序的发送命令从文件中读取并使用每一行作为参数。

我想在 expect 程序中使用类似循环的结构,它可能如下所示(注意:- while 循环是虚构的。)

spawn /my/program

expect {
 -re EBtxjjmEcQTxc0SLd4TdXxjUduxCOLZBwEme2Z.*password: { 
             while read_line in FILE; 
             do 
                 send $read-line; 
             done 
}

如何使用“expect”编写等效的 while 循环部分

最佳答案

请注意,在您的问题中,您缺少一个大括号,并且您输入了错误的变量名称(read_lineread-line)

Expect 是一个 Tcl 扩展,因此您拥有所有 Tcl commands任你支配

spawn /my/program
expect { 
    -re EBtxjjmEcQTxc0SLd4TdXxjUduxCOLZBwEme2Z.*password: { 
        set fh [open FILE r]
        while {[gets $fh read_line] != -1} {
            send "$read_line\r"
        } 
        close $fh
    }
}

如果安装 tcllib , 你可以这样做

package require fileutil
spawn /my/program
expect { 
    -re EBtxjjmEcQTxc0SLd4TdXxjUduxCOLZBwEme2Z.*password: { 
        fileutil::foreachLine read_line FILE {
            send "$read_line\r"
        } 
    }
}

关于linux - 期望程序从文件发送命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14041717/

相关文章:

python - 无法使用 child.before 获取数据

python - 在 Ubuntu(WSL1 和 WSL2)中显示 matplotlib 图(和其他 GUI)

linux - 如何解析 zsh/shell 脚本中的问号作为参数?

linux - 我如何在 Linux 中创建特定于日期的文件夹

linux - 如何通过 SSH bash 脚本在远程服务器上进行 cd?

linux - 期待 : How to create a remote directory thru ssh command

linux - 在 linux 上使用 ffmpeg 删除/覆盖 mp4 视频格式上的 Logo

c++ - 在 C++ 中调试错误

tcl spawn sftp 不工作

bash - 如何从单个控制台在 20 多个站点上运行测试?