现在我可以使用下面的脚本来访问一台机器。
ssh machine01 cat test.sh
字符串但现在我有30多台机器需要访问。他们的名字格式都是machine01, machine02, ..., machine30。如何使用for语句来实现呢?类似于:
machine01, machine02, ..., machine30
for
for num in [from 01 to 30] do ssh es-data2023+num cat /data/restart.sh done
型
7qhs6swi1#
正如@Barmar已经解释过的,你可以在bash中使用{01..30},它将扩展为完整的数字序列,因此工作脚本可以如下所示:
bash
{01..30}
for HOSTID in {01..30} do ssh user@machine$HOSTID "cat /data/restart.sh" done
字符串但如果你真的想(远程)管理你的30台主机,我会好好看看Ansible,而不是试图重新发明轮子。Ansible还使用SSH,因此您不需要在服务器上安装任何其他代理,只需安装一个控制节点即可管理它们。现在,您还可以并行运行任务,并更好地保持结果的分离。更不用说继续开发Ansible可能性的庞大社区了。
1条答案
按热度按时间7qhs6swi1#
正如@Barmar已经解释过的,你可以在
bash
中使用{01..30}
,它将扩展为完整的数字序列,因此工作脚本可以如下所示:字符串
但如果你真的想(远程)管理你的30台主机,我会好好看看Ansible,而不是试图重新发明轮子。Ansible还使用SSH,因此您不需要在服务器上安装任何其他代理,只需安装一个控制节点即可管理它们。现在,您还可以并行运行任务,并更好地保持结果的分离。更不用说继续开发Ansible可能性的庞大社区了。