【问题标题】:Bash command to do multiple things in a server in command line [duplicate]Bash命令在命令行中的服务器中执行多项操作[重复]
【发布时间】:2016-03-23 06:45:12
【问题描述】:

我在做我需要的事情时遇到了问题。如果我做得对,我可以节省大量时间。

我基本上需要遍历每个主机,我可以自己完成这部分。

但我永远无法得到正确的命令。

我基本上想为每个主机都这样做

 chmod 750 /root; chown -R root:root /root;exit;

我尝试了很多变体,所有变体都只会ssh 发送到服务器,而在该服务器上什么也不做。他们从未在目标服务器上实际运行该命令。相反,他们最终在我正在运行 ssh 的服务器上运行命令。

另请注意,公钥已设置,因此密码没有问题。

所以为了更好地理解我会展示这个

for h in HOSTNAMES do
  ssh $h; OTHER STUFF
done

【问题讨论】:

  • 您是否使用 & 链接您的“连接到服务器”命令?
  • 你试过chmod 750 /root && chown -R root:root /root吗?
  • 你实际上并没有展示你如何通过 ssh 进入你的服务器并执行这些命令,尽管这可能是问题所在
  • 您如何管理输入root 的密码?我认为这必须是第一大问题。但是我们需要查看一些失败的代码来帮助修复它,我们不能为您编写它;-) 好吗?祝你好运。
  • 安全等效已设置

标签: linux bash


【解决方案1】:

远程服务器的命令作为ssh 的最后一个参数给出。同样不需要exit 命令,因为在命令完成后连接会关闭。

for h in $HOSTNAMES
do
  ssh $h "chmod 750 /root; chown -R root:root /root"
done

【讨论】:

  • 是的,我只是想确保退出已经完成...稍后我会试试这个。
  • 这绝对有效。谢谢。我不得不修改一些东西,因为我们可以做一些事情,但是这很棒。
【解决方案2】:

这对我有用。

C02NQ9GLG3QD:~ lcerezo$ ssh -K myhost "last -1;uptime"
lcerezo   pts/2        172.31.0.40      Wed Dec 16 17:31 - 17:39  (00:07)
wtmp begins Tue Sep  8 17:15:21 2015
16:12  up 1 day,  5:06, 6 users, load averages: 2.16 1.98 2.00
C02NQ9GLG3QD:~ lcerezo$`

你看过像 pdsh 这样的工具吗? 不过,对于大规模配置,我认为您最好花时间学习配置管理工具,例如:

  • 可靠的
  • 傀儡
  • cfengine
  • 盐堆

【讨论】:

  • 这可能有效,但在这种情况下无效。我没有那个能力。
  • 哪个能力? -K 标志是我的用法,但与问题无关。重要的部分是将这些放在引号中。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-20
  • 1970-01-01
  • 2018-11-15
  • 2021-10-28
  • 2018-08-12
  • 2017-12-20
相关资源
最近更新 更多