Если у нас есть коллекция компьютеров Linux в локальной сети, как написать сценарий оболочки для отключения всех компьютеров

У меня есть лаборатория и в том, что коллекция компьютеров 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 настроен на отсутствие пароля, а затем выключает компьютер. Это означает, что любой пользователь, который знает имя пользователя, может сделать это пользователю и отключиться. Это то, что вы действительно хотите?

Снова извиняюсь за то, что это опубликовано как отдельный ответ - я хочу добавить его в качестве комментария к ответу @ Cristian, так как его ответ - тот, за который я бы проголосовал

Другие вопросы по тегам