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

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

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

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

我从来没有使用Expect,但你的代码示例…

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

…似乎检查机器上的文件存在期望运行,而不是远程的。 所以,除非脚本在远程服务器上运行,否则将无法工作。

这是我做了什么,现在它工作

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

这样,如果文件存在,文件将被打印,如果不存在则不会抛出错误。

呃,你可能是以相当迂回的方式做事。

首先,请描述您的情况:

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

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