如何在多个主机上同时使用sudo apt-get install命令进行安装?

我有几台机器需要维护。我希望能够一次在所有机器上安装一个软件包。在ubuntu上,最简单的方法是什么?

这里是我尝试使用parallel-ssh并行方式在所有机器上安装texlive-full的示例:

parallel-ssh -i -H "myAdminName@comp1 myAdminName@comp2 myAdminName@comp3" -A -l root sudo apt-get install texlive-full -y

很遗憾,这给了我以下的错误提示:
Warning: do not enter your password if anyone else has superuser
privileges or access to your account.
Password: 
[1] 12:28:01 [FAILURE] myAdminName@comp1 Exited with error code 1
Stderr: sudo: no tty present and no askpass program specified
[2] 12:28:01 [FAILURE] myAdminName@comp2 Exited with error code 1
Stderr: sudo: no tty present and no askpass program specified
[3] 12:28:01 [FAILURE] myAdminName@comp3 Exited with error code 1
Stderr: sudo: no tty present and no askpass program specified

有人知道如何修复吗? 我已经在所有这些机器上放置了公共SSH密钥...


我认为命令应该是pssh - d a i s y
如果我将该命令与“echo sth”结合使用,它就能正常工作,所以这应该不是问题。 - mcExchange
1个回答

为了管理多台机器,我使用的是clusterssh。它允许同时打开所有机器的终端会话。如果你想要在特定的一台机器上运行命令,你可以选择它的窗口。如果你想要向一组机器提交命令,你可以选择需要连接的所有主机。很简单,对吧 ;) 你可以使用一个配置文件,给一组计算机分配一个昵称,然后使用该昵称启动clusterssh,而不是使用机器名称/ IP列表。
我现在已经使用它多年了。另一个可能的选择是tmux,但我需要检查并行会话的语法。
编辑:我注意到您尝试进行非交互式安装。Clusterssh打开终端会话,所以它将是交互式的。由于您没有说明是否需要交互性或非交互性,我希望交互式终端对您来说是可以的。

Clusterssh听起来不错。我可以使用clusterssh myAdminName@comp1 myAdminName@comp2 myAdminName@comp3,然后并行输入命令。 - mcExchange
你可以提供一个使用主机列表的文本文件的例子吗? - mcExchange