Удаленное выключение компьютера linux

Скрипт выключения компьютеров на Linux по ssh

Рассмотрим возможность автоматизации процесса выключения нескольких компьютеров либо одного, работающих на операционной системе Linux в локальной сети путем запуска скрипта на bash.

# touch poweroff_script.sh (создание скрипта)

# nano poweroff_script.sh (открытие текстовым редактором)

ssh root@192.168.X.XXX «poweroff»

Сохранив изменения в файле даем ему права на запись и генерируем ключ для дальнейшего входа без ввода пароля:

# chmod +x poweroff_script.sh (права на выполнение)

# ssh-keygen (генерация ключа)

Перейдя в каталог . ssh расположенном в root введя команду:

Нужно скопировать представленный ключ на компьютеры которые планируется в дальнейшем выключать в локальной сети.

# cat id_rsa.pub | ssh root@192.168.X.X“cat >> .ssh/aut_key” (переносим ключ на другой ПК)

Нажав Enter вводим пароль компьютера на который переносим ключ.

Теперь, если ввести просто

авторизация должна пройти без запроса пароля.

Выполнив указанные настройки, запустив скрипт poweroff_script.sh командой

указанные в нем команды будут выполнены, а компьютер или компьютеры в локальной сети будут выключены.

Подробнее — в представленном видео:

Фото- и видеоматериалы взяты с канала ServLesson на YouTube.

Источник

Как удаленно выключить компьютер с Windows, Linux и Mac?

Бывают случаи, когда компьютер, работающий под управлением операционной системы Windows, Linux и Mac нужно выключить не сразу, а по истечению какого-то времени: загрузка торрента, обновление программы или операционной системы, завершение диагностики и т д. При этом, чтобы удаленно выключить компьютер с Windows или любой другой операционной системой, нужно изначально настроить его. Поэтому предлагаем рассмотреть способы, как осуществить удаленное выключение устройства.

Методы удаленного выключения ПК с Windows 7, 8/8.1, 10

Удаленно выключить ПК с Windows можно несколькими способами: с помощью командной строки и с помощью службы удаленного реестра. В первом случае нужно запустить консоль с правами Администратора и ввести shutdown /i.

Откроется окно утилиты Remote Shutdown. Нажимаем на кнопку «Добавить».

Вводим имя компьютера и жмем «Ок».

Теперь выбираем операцию: перезагрузка, выключение или неожиданное завершение.

В причинах выбираем «Другое (запланированное)», а также указываем комментарий. Без комментария кнопка «ОК» не будет активной. Кликаем «Ок».

Для того, чтобы удаленно выключить компьютер с Windows 7 и выше с помощью службы удаленного реестра, стоит выполнить следующее:

  • Теперь запускаем Брандмауэр. В меню слева выбираем «Разрешить запуск программы или компонента через брандмауэр Windows».
  • Выбираем «Удаленное управление Windows» или «Windows Management Instrumentation». Устанавливаем флажки.
  • Теперь с помощью командной строки запускаем удаленное выключение ПК.
Читайте также:  Bash скрипты linux основы

Как удаленно выключить ПК с Linux?

Устройство с операционной системой Linux можно удаленно выключить несколькими способами.

Первый способ – использование Терминала, аналога командной строки с Windows.

  • Запускаем терминал. Вводим sudo shutdown -h now. Это команда, которая выключит компьютер сразу.
  • Если ввести sudo shutdown -h +5, то система завершит свою работу через 5 минут. Время можно задавать свое. К примеру, можно задать точное время sudo shutdown -h 21:00.
  • Для того, чтобы отменить выключение, стоит ввести sudo shutdown –c.

Также, если ваш ПК подключен к серверу, то удаленно выключить компьютер с Linux можно следующим образом:

  • Необходимо установить или запустить стандартное средство putty. Эту программу можно запустить из командной строки.
  • Теперь создаем документ shutdown.txt с содержанием shutdown -h now.
  • Теперь создаем документ с разрешением bat и названием serv-rem-shut.bat. Содержание должно быть следующим putty.exe -m shutdown.txt -ssh -P 22 -l root -pw rootpass 10.10.5.15, где каждая команда имеет свое обозначение.
  • Передаем пользователю на ПК, который нужно выключить, три файла:
  • putty.exe
  • shutdown.txt
  • serv-rem-shut.bat

Теперь, при запуске скрипта serv-rem-shut.bat, серверу по сети будет отправлена команда на завершение работы. При этом система не выдаст никаких вопросов. Сервер просто молча выключится.

Как удаленно выключить ПК с Mac?

Для того, чтобы удаленно выключить Mac, стоит выполнить следующие действия:

  • Запускаем командную строку, перейдя по адресу /Applications/Utilities/folder.
  • Вводим sudo shutdown -h now. Компьютер сразу выключиться.

Если же запустить Терминал, то командой sudo halt можно моментально выключить устройство. Однако, как в первом, так и во втором случае, нужно ввести пароль к учетной записи Mac.

В сети можно найти еще способы, как удаленно отключить устройства с Windows, Linux и Mac. Однако мы привели только безопасные способы, при применении которых вы не нарушите системные настройки и не повредите системные файлы.

Источник

Как дистанционно выключить все компьютеры linux?

Подскажите плз как из под linux массово выключить linux компьютеры в заданное время?

И отдельный скрипт по включению?

на выключение пробовал через expect — почему-то не получилось.

вот пример мой выключения 1 компьютера, но он не работает, почему?

#!/usr/bin/expect spawn ssh root@192.168.2.27 expect password send "poweroff\r" 

Перемещено beastie из general

Читайте также:  Какая версия java установлена linux

Чтобы никого не обидеть, будем называть его a-word.

А чего не ssh root@192.168.2.27 poweroff ? И почему по паролю, а не по ключу?

А разве всякие там puppet и прочие подобные системы не для того придуманы?

#!/bin/bash while read host; do ssh power@$host nohup poweroff done < /etc/power/hostlist 

Еще более прикольный вопрос: кагого вообще root, если должен быть выделенный юзверь, умеющий только poweroff.

Кстати, можно в shell юзера power написать nohup poweroff → достаточно будет тупо писать ssh power@host

а вот именно через expect это возможно?

чтобы по ключу, я так понимаю надо на всех машинах создать этот ключ?

как сделать именно через expect по паролю?

чтобы по ключу, я так понимаю надо на всех машинах создать этот ключ?

Я без понятия, что такое expect и нафиг оно нужно. А ssh должен быть по ключам. Ибо нефиг фигней маяться!

#!/bin/bash while read host; do echo -e "\nssh to $host. " ssh-copy-id power@$host done < /etc/power/hostlist 

З.Ы. Ни в коем случае не делай ssh руту по ключам!

З.З.Ы. И лучше вообще запрещать везде доступ руту по ssh. Заходишь под обычным пользователем, потом делаешь su -.

Байку про выезжающий сидюк уже рассказывали?

  • Сделай для рута на каждом клиенте возможность авторизации по ключу,
  • создай отдельный ключ,
  • на каждом клиенте в /root/.ssh/authorized_keys пропиши публичную часть ключа с параметром command="poweroff" .

Теперь любой ssh -i key.file root@$host выключит host . Только нужно будет ssh по ним всем запустить, чтобы они в known_hosts прописались.

Ни в коем случае не делай ssh руту по ключам!

подписываюсь под вопросом

Вход по ключам + типа такого:

 HOST1=0.1 HOST2=0.2 HOST3=0.3 COMMAND=halt CONNECT=ssh USER=root $CONNECT $USER@192.168.$HOST1 $COMMAND $CONNECT $USER@192.168.$HOST2 $COMMAND $CONNECT $USER@192.168.$HOST3 $COMMAND 

Потому что завладев одним паролем юзверя, от которого запускается этот скрипт, получим рутовский доступ к уйме компов!

По ключам ни в коем случае нельзя руту по ssh.

Ну можно не руту, а отдельному пользователю которому разрешено делать halt

Вот я ниже скриптики и привел для пользователя power, которому шеллом назначается poweroff или halt, запущенный в nohup (чтобы сразу соединение закрылось).

По ключам ни в коем случае нельзя руту по ssh.

А вот PermitRootLogin prohibit-password не помешает.

Читайте также:  Check login in linux

Так, с выключением, вроде разобрались. А для включения используй WOL.

%staff ALL=(ALL) NOPASSWD: poweroff 

По ключам ни в коем случае нельзя руту по ssh.

Вообще-то, ключ, по которому доступен рут лежит на машине админа (а кто еще заходит под рутом). И чтобы получить его, нужно чтобы либо админ был балбесом, либо целенаправленная атака на конкретного человека. Т.е. шансов мало завладеть ключем.

В описанной ситуации по-любому нужно уметь делать автоматическое выключение машин, поэтому, кто завладеет машиной, с которой запускается скрипт, тот сможет его запустить. Так что не важно будет там авторизация по ключам или другая. В моем алгоритме, завладев ключем ничего кроме poweroff сделать не получится.

P.S. По моему мнению, закрывание входа по ssh руту - параноя, которая создает трудности (иногда нужно иметь возможность, например, скопировать файлы доступные на одной машине только руту, на другую в место доступное тоже только руту, и делать это в два приема неудобно, кроме того, иногда бывает нужно сделать что-то со /home, отмонтировать, например, а зайдя пользователем и сделав sudo su -, хотяка не отмонтируешь). Короче, запрет входа руту даже по ключу создает неоправданные сложности (не окупает оно себя в общем). Так же как и перевешивание ssh на нестандартный порт, например, чтобы не подбирали пароли пользователей (есть более эффективные методы без необходимости обучать scp, git и другие программы, которые ходят по ssh использованию нестандартного порта).

Представь, что у ТСа рутовский доступ по ключам к сотне компов. Он отошел, забыв заблокировать экран. Кто-нибудь шутки ради запускает скрипт по аналогии с вышеприведенным, но на nohup rm -rf / . Классная будет шутка.

Во первых, по хорошему, сам ключь запаролен. (И ssh-agent для ленивых.)

Представь, что у ТСа рутовский доступ по ключам к сотне компов. Он отошел, забыв заблокировать экран.

Отсюда вытекает правило: «Никому не давай свой комп разблокированным и запущенным ssh-agent'ом!»

P.S. Я наблюдал сильную корреляцию между параноей недавания входа рутом и любовью к FreeBSD (пока BSD еще оставалась популярной в России). Эдди, ты BSD'оид?

я понял. Это мамкин кулхацкер хочет кому-то насолить. К гадалке не ходить.

Представь, что у ТСа рутовский доступ по ключам к сотне компов.

окстись, он же школьник еще. 99 год рождения же.

Нет еще. Но если гента тоже сдохнет, то буду.

Источник

Оцените статью
Adblock
detector