LINUX.ORG.RU
ФорумAdmin

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

 


2

4

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

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

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

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

#!/usr/bin/expect

spawn ssh root@192.168.2.27

expect password {send MyPassword\r}

send "poweroff\r"

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



Последнее исправление: beastie (всего исправлений: 4)

Ответ на: комментарий от Deleted

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

i-rinat ★★★★★
()

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

Xenius ★★★★★
()

есть какие-либо идеи?

areal99
() автор топика
Ответ на: комментарий от i-rinat

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

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

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от i-rinat

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

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

areal99
() автор топика
Ответ на: комментарий от areal99

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

ssh-copy-id user@remotehost
i-rinat ★★★★★
()
Ответ на: комментарий от Eddy_Em

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

Eddy_Em ☆☆☆☆☆
()

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

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

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

man sshd

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

anonymous
()
pdsh -l user -w <список контуперов> poweroff
Deleted
()

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


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

Dron ★★★★★
()
Ответ на: комментарий от anonymous

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

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

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от Dron

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

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от Eddy_Em

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

С какого это перепугу?

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

beastie ★★★★★
()

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

beastie ★★★★★
()
Ответ на: комментарий от Dron

Или через sudo и группы:

%staff ALL=(ALL) NOPASSWD: poweroff

beastie ★★★★★
()
Ответ на: комментарий от Eddy_Em

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

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

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

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

anonymous
()
Ответ на: комментарий от beastie

С какого это перепугу?

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

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от Eddy_Em

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

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

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

anonymous
()

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

targitaj ★★★★★
()
Ответ на: комментарий от Eddy_Em

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

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

targitaj ★★★★★
()
Ответ на: комментарий от anonymous

Эдди, ты BSD'оид?

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

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от Eddy_Em

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

Абсолютно такой же результат и для пароля. А вот во всех остальных случаях - безопаснее именно ключ.

zink ★★
()

Не дожидаешься промпта для ввода команд. После пароля добавь строку
expect \\\\# и в конце expect eof
Возможно нужно указать полный путь до poweroff
Еще есть:
set timeout N - где N время в секундах сколько будет ждать команда expect появления строки, если строка не появиться перейдет к следующей команде, при -1 ждать бесконечно.
log_user 1 - помогает при отладке
Вобщем начни эксперименты с безобидных команд, как заработает меняй на poweroff.

anc ★★★★★
()

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

С этим сложнее. Читай про всякие WOL и т.п. собственно к linux это уже отношения не имеет.

anc ★★★★★
()
Ответ на: комментарий от beastie

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

Не не, он прав, а то потом истории «бухнул как-то админ и набрал команду...», от себя тоже защищаться надо. :)

anc ★★★★★
()
Ответ на: комментарий от Eddy_Em

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

Вот! В том-то все и дело, что многие «без понятия, что такое expect», если внезапно кто-то получил доступ к твоей учетке, то скопировать ключики не такая сложная задача, все о них знают, лежат по стандартным путям, а вот про то что я в какой-то там хз где лежащий скрипт пароль прописал (а если еще в хитро извернутом виде) это догадаться надо, так что безопаснее получается :) Это как с вирусами в linux нафиг не нужно никому, так и здесь проще ключи с 100-ни машин собрать чем голову ломать над одним. :)

anc ★★★★★
()
Последнее исправление: anc (всего исправлений: 1)
Ответ на: комментарий от Eddy_Em

Ну это исключительно проблема вашей генты, поставьте. :)
ЗЫ Обнаружил, что под мак ос х есть из каробки.

anc ★★★★★
()
Ответ на: комментарий от beastie

А если серьезно мне просто вспомнился опыт работы с одним отделом, вот там народ с завидной регулярность отжигал, сядут побухать где-нибудь с обеда, а к вечеру их на подвиги тянет, ченидь понастраивать, ну и потом то роутинг на обьекты пропадет, то днс встанет и т.д и т.п. и самое веселое они ж во первых нифига рано на работу не припруться во вторых они с бодуна ничего не соображают, поэтому решение проблемы растягивается, то есть совсем не факт что на следующий день они починят.

anc ★★★★★
()
Ответ на: комментарий от beastie

Да ладно! Админ может и бухнуть: скажем, ДР чей-то на работе отмечали... Хотя, скажем, я на работе чаще появляюсь с утра с бодуна, нежели вечером вдрыск бухой.

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от anc

а то потом истории «бухнул как-то админ и набрал команду...»

«бухнул как-то админ и нассал в шкаф распределения питания, через который запитан весь датацентр...». Ну, и как тут пароли помогут?

anonymous
()
Ответ на: комментарий от anc

скопировать ключики не такая сложная задача, все о них знают, лежат по стандартным путям

в зашифрованном виде, поэтому копировать придется дамп ssh-agent'а и разбираться...

anonymous
()
Ответ на: комментарий от anc

Тогда уж «не похмелился как-то админ...» :)

Не-не-не-не, наши админы не бухают!!!

anonymous
()
Ответ на: комментарий от Eddy_Em

Хотя, скажем, я на работе чаще появляюсь с утра с бодуна, нежели вечером вдрыск бухой.

Ну, кто же вечером вдрызг бухой на работу потащится...

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.