【问题标题】:Verify command successfully executes over ssh in BASH验证命令在 BASH 中通过 ssh 成功执行
【发布时间】:2021-12-02 21:06:46
【问题描述】:

如何验证 linux 命令是否在 ssh 服务器上成功执行?看下面的例子

ssh -qX 10.10.1.123 chmod -R 755 someDir/

我知道使用返回码(0 或 1)方法是可行的,但在某些情况下执行上述命令但权限不会更改。有没有更好的方法来验证它是否执行成功并相应地改变了权限?

【问题讨论】:

  • chmod 本身是否也存在“执行上述命令但权限未更改”的相同问题,而没有反映在退出状态中?
  • ...要明确:如果chmod 本身仍然存在这个问题,我认为这没有任何理由成为ssh 的问题;您所关心的只是检测 chmod 问题是否发生,以及它是本地还是远程无关紧要。
  • (顺便说一句,为什么ssh -X?你这里没有运行GUI应用程序)
  • 在哪些情况下ssh即使命令失败也会返回成功状态?我想不出来。

标签: bash ssh chmod


【解决方案1】:

没有通用答案,因为没有通用问题。 ssh 不会向调用者返回成功,除非远程孩子给出了成功的结果。

对于特定问题,假设您的远程机器有一个 chmod 版本,该版本会错误地返回无根据的成功退出状态,您可能会使用:

if [[ $(ssh 10.10.1.123 'find someDir/ ! -perm 755 -print -quit') ]]; then
  echo "At least one file under someDir did not have its permissions changed to 755" >&2
fi

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-01-28
    • 2011-09-19
    • 1970-01-01
    • 1970-01-01
    • 2014-09-02
    • 1970-01-01
    • 2012-08-20
    • 1970-01-01
    相关资源
    最近更新 更多