UNIX-通过ssh测试文件,并在原始主机上返回True



需要以编程方式检查数组中文件的分布情况。登录到主服务器,然后想使用简单的ssh检查worker上的文件。到目前为止,我有:

ssh $HOSTNAME "[ -e '$HOSTNAME:/directory/filename' ] && echo 'Exists'"

根据一些日志输出,我知道ssh是成功的,但我如何让测试向主服务器返回消息?运行以上操作不会返回任何结果。

SSH将使用与在远程主机上运行的命令相同的退出代码退出。如果该命令是一个测试,那么退出代码将与您通常期望的测试代码相匹配。

我建议如下:

  • 简化您的命令,只通过SSH运行测试
  • 在本地计算机上运行echo
  • $HOSTNAME:放在你的道路前面似乎是不对的
ssh "$HOSTNAME" "test -e '/directory/filename'" && echo 'Exists'

我个人认为if语句更容易理解,如果你愿意走这条路,这是一个可选的更改:

if ssh "$HOSTNAME" "test -e '/directory/filename'"; then
echo "Exists"
else
echo "Does not exist" >&2
exit 1
fi

相关内容

最新更新