我使用expect
已经建立了ssh connection
。
我希望看到ls -1 /etc/folder/
的结果。
我试过
send "files=$(ls -1 /etc/folder/)"
put $files
但失败了。
我怎么能这样做?
答案 0 :(得分:1)
你遇到的大问题是本地存在变量和远程系统上的变量,它们根本不是一回事。虽然是,但是可以构建使系统之间自动共享变量(似乎是)的系统,默认情况下肯定不会发生。这是一个概念性的事情,你必须正确或者除了偶然之外你不会写出正确的代码。
除此之外,您有一个较小的问题,即您没有正确发送命令,并且没有处理返回的结果。假设您知道远程系统上的提示只是一个$
并且文件不是从那开始的,那么您需要这样做。
# Note the \r; it is like pressing <Return> and is important!
send "ls -1 /etc/folder \r"
# Now we collect the output:
set files {}
expect {
"$ " {
puts $files
}
-re {^[^$].*$} {
# This grabs a line that doesn't start with $ and adds it to the list
lappend files $expect_out(0,string)
# Now we go back to waiting for another line or the prompt
exp_continue
}
}
那就是完全你是怎么做到的。是的,它需要相当多的代码...