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

3phpmpom  于 2023-03-22  发布在  Unix
关注(0)|答案(1)|浏览(135)

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

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

根据一些日志输出,我知道ssh是成功的,但是我怎样才能让测试向主服务器返回消息呢?运行上面的命令什么也不会返回。

z9gpfhce

z9gpfhce1#

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

相关问题