Ksh,更好的ssh和运行多个命令的方法

时间:2017-06-04 10:39:21

标签: linux ssh ksh

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

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

> dplyr::select(iris, Petal.Width, -Petal.Length, everything())
    Petal.Width Sepal.Length Sepal.Width Petal.Length    Species
1           0.2          5.1         3.5          1.4     setosa
2           0.2          4.9         3.0          1.4     setosa
3           0.2          4.7         3.2          1.3     setosa

2 个答案:

答案 0 :(得分:2)

是的,这很有效。但是如果先前的命令失败,如果以前的命令可以做坏事,那么如果先前的命令失败,最好停止链。

一种简单的方法是将命令与&&

链接在一起
  A && B && { C || true $? } && D

或者,

  A && 
  B &&
  { C || true $? } && 
  D

C上的技巧允许该命令失败但保持链接...如果没有匹配,grep经常需要这个继续。 true $ 的参数什么也不做,除非在 set -x 下运行,否则它将跟踪C的错误情况。

答案 1 :(得分:0)

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

它是什么?您将运行单独的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'