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_out
(注意,no空间)包含REGEX模式的第一个捕获括号的内容。也要注意,输出将包括python命令,并以
1,string
的结尾:您可以执行以下操作:
\r\n
run作为命令
set outputLines [lrange [lmap line [split $pythonOutput \n] {regsub {\r$} $line ""}] 1 end]
trory要使用
spawn ssh -c "python pythonscript.py arg1"
expect $prompt
用于可执行命令,因为这将取回结果,并在执行后终止它们。