我有一个期望脚本,它将登录到远程服务器并执行 python 脚本。在 python 脚本中,我为某个条件设置了 sys.exit(1) ,以便在满足该条件时停止执行。有没有办法知道 python 脚本是否停止执行或运行良好?
(或者)有没有办法读取 python 脚本生成的输出(也就是说我想读取 send "python pythonscript.py arg1\r"
的输出)。任何方法都可以。请提出想法
expectscript.exp
#!/usr/bin/expect
eval spawn ssh -oStrictHostKeyChecking=no -oCheckHostIP=no user@******
expect "Password:"
send "password\r"
expect "$username$"
set prompt ":|#|\\\$"
set timeout -1
send "cd /Users/username/Documents/folder/\r"
send "python pythonscript.py arg1\r"
expect $prompt
最佳答案
这是您需要在提示之前expect -re
捕获输出的位置:
send "cd /Users/username/Documents/folder/\r"
expect $prompt
send "python pythonscript.py arg1\r"
expect -re "(.+)$prompt"
set pythonOutput $expect_out(1,string)
expect 将输出缓冲到 expect_out
数组中,数组键 1,string
(注意,那里没有空格)包含以下内容正则表达式模式的第一个捕获括号。
另请注意,输出将包含 python 命令,并且行以 \r\n
结尾:因此您可以执行以下操作:
set outputLines [lrange [lmap line [split $pythonOutput \n] {regsub {\r$} $line ""] 1 end]
关于python - 如何读取expect脚本中的send命令输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57975853/