【问题标题】:Ksh, better way to ssh and run multiple commandsKsh,更好的 ssh 和运行多个命令的方法
【发布时间】:2017-11-05 07:04:07
【问题描述】:

在 korn shell 中 ssh 和运行多个命令的好方法是什么?我遇到了相关的question 并且最佳答案对我有用,但我在其中指定 /bin/bash/ 并在 korn shell 上运行它。

可以在命令列表下面运行(从引用问题的答案中复制)还是可以有更好的 ksh 方法?

ssh otherhost /bin/bash << EOF
  ls some_folder; 
  ./someaction.sh 'some params'
  pwd
  ./some_other_action 'other params'
EOF

【问题讨论】:

  • 你试过用 ksh 运行这个例子吗? (如有疑问,请尝试一下!);如果您收到错误...提供您的完整示例和错误;您对“更好”的想法是什么?您试图完成此示例(或该链接中的任何其他示例)无法解决的问题?
  • @markp 正如所讨论的那样,是的,我试过了,它也运行良好,所以没有错误。在命令中我使用 /bin/bash/ 但我在 korn shell 中,这就是为什么我问是否有任何其他方法可能更好地使用 ksh 而不是使用 bash。
  • 我的意思是:用 /bin/ksh(或你的 ksh 的适当路径)替换 /bin/bash,看看会发生什么。

标签: linux ssh ksh


【解决方案1】:

是的,这行得通。但是,如果前面的命令失败,后面的命令会做坏事,那么如果前面的命令失败,你最好停止链。

一种简单的方法是将命令与 && 链接在一起

 A && B && { C ||真正的美元? } && D

或者,

 一个 &&
  B&&
  { C ||真正的美元? } &&
  D

C 的技巧允许该命令失败但保持链继续运行......如果没有匹配项,grep 通常需要此继续。 $? 的参数对 true 没有任何作用,除非在 set -x 下运行,否则它会跟踪 C 的错误情况。

【讨论】:

    【解决方案2】:

    您使用什么外壳并不重要。我宁愿坚持使用其中一个答案中提供的解决方案,即建议使用连接多路复用

    它是什么?您将运行单独的 ssh 命令,但它们都将在单个 TCP 连接中运行。

    以及如何实现?~/.ssh/config中创建一个内容相似的配置文件:

    Host otherhost
      ControlPath ~/.ssh/controlmasters/%r@%h:%p
      ControlMaster auto
      ControlPersist yes
    

    然后像在本地运行一样运行命令(以ssh server 为前缀)。第一个将启动连接,另一个将只是使用它

    ssh otherhost ls some_folder; 
    ssh otherhost ./someaction.sh 'some params'
    ssh otherhost pwd
    ssh otherhost ./some_other_action 'other params'
    

    【讨论】:

    • 使用 ssh/multiplexing 的一个问题(假设每个 ssh 调用单个命令 - 根据您的示例)是连续命令不能依赖先前命令的结果(即,每个调用在家里开始(结束)目录);简单的例子: cd /tmp ; pwd ... 当在 HERE 文档中作为 2 行提交时,pwd 返回 /tmp ... 当作为 2 个单独的 ssh/cmd 调用提交时,pwd 返回 /remote/home/directory;关键是解决方案(HERE 文档;ssh/多路复用;其他)必须考虑所需的一组操作以及它们是否可以独立运行
    • @markp 显然,这可能是一个缺点,但它也可能是一个优点,一个人不能弄乱另一个人的环境。显然,没有说明对命令之间依赖关系的要求,因此我提供这种最先进的解决方案作为丑陋 bash 重定向的选项,其中包含 HERE 文档和引用问题中的其他建议解决方案,这限制了可用性(在与脚本交互的名称、其他重定向等)。
    猜你喜欢
    • 1970-01-01
    • 2015-12-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-13
    相关资源
    最近更新 更多