Bash命令在命令行中在服务器中执行多项操作

时间:2015-12-16 22:57:36

标签: linux bash

我在做我需要的时候遇到了问题。如果我这样做,我可以节省大量时间。

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

但我永远无法让命令出来。

我基本上想为每个主机

执行此操作
 chmod 750 /root; chown -R root:root /root;exit;

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

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

为了更好地理解,我将展示这个

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

2 个答案:

答案 0 :(得分:1)

这适合我。

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这样的工具? 但是对于大规模配置,我认为您将更好地花时间学习配置管理工具,例如:

  • ansible
  • 木偶
  • 的cfengine
  • 盐栈

答案 1 :(得分:1)

远程服务器的命令作为ssh的最终参数给出。此外,exit命令不是必需的,因为在命令完成后关闭连接。

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