Expect 脚本不会在远程服务器上打印(cat)文件

Expect 脚本不会在远程服务器上打印(cat)文件

我有一个期望脚本,它检查远程服务器上是否存在文件,然后尝试打印(使用 cat)该文件(如果存在)

由于某种原因,期望脚本忽略了这些命令。

send "if {[file exists "./abc.test"]} {cat ./abc.txt\r}"

答案1

我从未使用过 Expect,但是您的代码示例……

if {[file exists "./abc.test"]} {send "cat ./abc.txt\r"}

...似乎检查了运行 expect 的机器上的文件是否存在,而不是远程机器上的文件是否存在。因此,除非脚本在远程服务器上运行,否则它将不起作用。

答案2

这是我所做的,现在它起作用了

cat /some/path/abc.txt 2> /dev/null

这样,如果文件存在,就会打印该文件,如果不存在,也不会抛出错误。

答案3

嗯,你做事的方式可能比较迂回。

首先,请描述一下你的背景:

  • 您究竟如何(完整命令行)调用该脚本?
  • 它如何访问远程服务器?您提供的脚本中没有远程访问。

最后,您真正想做什么?如果您想打印远程系统上的文件,直接调用 ssh 可能更容易。Expect 适用于没有脚本语言的脚本程序(例如简单的 ftp 客户端)。将它与命令 shell 一起使用会很复杂,因为命令 shell 已经具有强大的脚本语言。

相关内容