Если вы посмотрите страницу руководства ssh
по man ssh
, вы найдете соответствующий синтаксис
ssh [...] [-l login_name] [...] [user@]hostname [command]
Итак, когда он разбирает вашу команду, он будет рассматривать первый аргумент без флагов как имя хоста, а то, что идет после него, как команду, передаваемую удаленному серверу для выполнения.
Вернемся к вашему случаю. Если вы поставите свое имя после имени хоста, то это будет рассматриваться как команда. Поэтому и появляется сообщение об ошибке. Потому что команда root
не может быть найдена на удаленном хосте.
Да. Хотя, поскольку все они имеют одинаковые учетные данные, я думаю, что то, что вы хотите, будет лучше достигнуто с помощью pdsh
.
Вам необходимо убедиться, что вы настроили ssh между серверами, чтобы вы могли войти в систему без пароля. Установите пакет pdsh
, если он у вас еще не установлен. После установки вы можете сделать что-то вроде:
pdsh -R exec -w ^hosts.txt screen -D -R
Пожалуйста, обратите внимание, что сейчас я не знаю фактическую команду экрана, которую вы хотите использовать. Однако вы можете выполнять любую команду, скрипт или список команд параллельно. Вышеприведенное будет выполняться одновременно со списком хостов, определенным в файле host.txt.
pdsh
— отличный инструмент для управления группами серверов, когда вам нужно выдавать команды параллельно. Посмотрите справочную страницу для pdsh
, там много вариантов. Стоит отметить переменную PDSH_SSH_ARGS_APPEND
,это позволит вам добавлять параметры из обычной команды ssh.