У меня есть лаборатория и в том, что коллекция компьютеров Linux подключена к локальной сети. Я хочу, как написать сценарий оболочки, чтобы закрыть все ПК, когда мы запускаем этот сценарий оболочки.
2 ответа
Поместите имена хостов или IP-адреса в файл с именем inventory.txt
следующим образом:
computer1
computer2
192.168.1.1
Используйте этот скрипт:
while read host; do
ssh root@${host} shutdown -h now
done < inventory.txt
Я извиняюсь, мне не разрешают добавлять комментарии (недостаточно высокая репутация?) поэтому, к сожалению, придется опубликовать это как ответ
Мне тоже любопытно, почему за ответ тоже проголосовали. В том, что отвечает @Cristian, есть много достоинств, и я согласен, что если у OP нет демона SSH, он либо заявит, что ему нужен обходной путь, либо он поймет, что ему нужно установить его. Учитывая, что большинство ответов для этого типа вещей использует демон SSH, я думаю, что это хороший ответ.
При этом я также согласен, что вы должны использовать root для этого и использовать аутентификацию по ssh-ключу. Это лучший и самый безопасный ответ. Конечно, вы не используете пароль в сценарии ssh - это сложнее (вероятно, потребуется использовать ожидаемое) и менее безопасно.
Я не знаю об использовании пользователя без полномочий root для выключения питания / перезагрузки. Используя отправленную вами ссылку, вы понимаете, что пользователь sudo настроен на отсутствие пароля, а затем выключает компьютер. Это означает, что любой пользователь, который знает имя пользователя, может выполнить sudo для этого пользователя и выключить его. Это то, что вы действительно хотите?
Снова извиняюсь, что это опубликовано как отдельный ответ - я хочу добавить его в качестве комментария к ответу @ Cristian, так как его ответ - тот, за который я бы проголосовал