URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 85616
[ Назад ]

Исходное сообщение
"автоматическое выключение сервера по SSH"

Отправлено masters , 13-Июн-09 14:50 
Есть 2 сервера в оффисе. 1й на винде 2003, а второй на FreeBSD 7.1 x64.

Оба подключены через ИБП. Только тот ИБП, что на виндовом сервере имеет еще и управление по USB.

Сейчас на винде настроено так, что при разряде батарей ИБП до 30% комп выключается. Но программка там универсальная - т.е. при разряде может не только вуключать комп но и выполнять разные комманды/программы.

Идея в чем: нужен скрипт, который бы выполнился при пропадении питания и корректно выключил второй сервер (на ФРЕ) по SSH.

Никто не пробовал такое, и вообще возможно-ли это?

P.S. когда-то давно писал программку на Делфи, которая управляла роутером по Телнет с использованием стандартной компоненты. Впринципе можно найти SSH - компоненты под Делфи (даже видел уже), но может есть вариант проще ???


Содержание

Сообщения в этом обсуждении
"автоматическое выключение сервера по SSH"
Отправлено smile , 13-Июн-09 15:45 
технически не делал, если бы пришлось, то 1 опробованый вариант таков:

1. сделать смертного (ничего не могущего) пользователя, обеспечтиь вход ssh по паре ключей
2. повесить на фряшном сервере крон-скрипт, проверяющий состояние какого-нибудь файлика-статуса. Если он есть - убитьь его и начать заверешние работы
3. виндовым ssh клиентом (той же путтей) в случае выключения питания заходить по на фряшный сервак под полбзователем из п.1.
4. в логин-скрип пользователя (мне не нравится), либо просто выполнением ssh командой с удаленной винды создавать статусный файлик, проверяемый в п.2

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

т.к. упса на фряшке не умная и сама себя не отключит (как я понял из описания), то и выключение придется делать без возможности включаться при подаче искрическтва, это минус.


"автоматическое выключение сервера по SSH"
Отправлено masters , 13-Июн-09 17:11 
>[оверквотинг удален]
>ключей
>2. повесить на фряшном сервере крон-скрипт, проверяющий состояние какого-нибудь файлика-статуса. Если он
>есть - убитьь его и начать заверешние работы
>3. виндовым ssh клиентом (той же путтей) в случае выключения питания заходить
>по на фряшный сервак под полбзователем из п.1.
>4. в логин-скрип пользователя (мне не нравится), либо просто выполнением ssh командой
>с удаленной винды создавать статусный файлик, проверяемый в п.2
>
>раздать права на создание файлика, проверить работу отдельных звеньев и в целом.
>

Вариант сильно запутанный... и ничего толком не дал.

Инетерсует именно как запустить ssh-клиент (тот-же путти) и передать в него логин, пароль, а потом комманду halt в автоматическом режиме.

Например: halt.cmd
putty.exe
login
pass
halt

>
>т.к. упса на фряшке не умная и сама себя не отключит (как
>я понял из описания), то и выключение придется делать без возможности
>включаться при подаче искрическтва, это минус.

Вариант решаем. Вместо shutdown можно делать halt. Т.е. комп корректно завершит все процессы и размонтирует винты - но не выключится. Тем самым он разрядит батареи УПСа и ему волей-неволей придется выключиться. А потом при появлении питания комп автоматом включится по настройкам в Биосе.


"автоматическое выключение сервера по SSH"
Отправлено smile , 13-Июн-09 17:39 
>[оверквотинг удален]
>>4. в логин-скрип пользователя (мне не нравится), либо просто выполнением ssh командой
>>с удаленной винды создавать статусный файлик, проверяемый в п.2
>>
>>раздать права на создание файлика, проверить работу отдельных звеньев и в целом.
>>
>
>Вариант сильно запутанный... и ничего толком не дал.
>
>Инетерсует именно как запустить ssh-клиент (тот-же путти) и передать в него логин,
>пароль,

для этого Вам и предложено выполнить п.1


> а потом комманду halt в автоматическом режиме.
>
>Например: halt.cmd
>putty.exe
>login
>pass
>halt

ломиться поьзователем с правами "гасить сервет" небезопасно. Разумнее сделать рутовый скрипт, который будет проверять признак "пора выключаться", а при автологине поьзователя (авто, потму что вводить пароль не потребуется - пара ключей спасут мир) выставлять этот признак.

Это вменяемый вариант автоматизации. Как выпонять команду в путти - смотрите хелп по ней, там написано.

>>
>>т.к. упса на фряшке не умная и сама себя не отключит (как
>>я понял из описания), то и выключение придется делать без возможности
>>включаться при подаче искрическтва, это минус.
>Вариант решаем. Вместо shutdown можно делать halt. Т.е. комп корректно завершит все
>процессы и размонтирует винты - но не выключится. Тем самым он
>разрядит батареи УПСа и ему волей-неволей придется выключиться. А потом при
>появлении питания комп автоматом включится по настройкам в Биосе.

да, это стандартный вариант, вижу проблему лишь в том, что упаса будет убиваться 0 - жалко ее.



"автоматическое выключение сервера по SSH"
Отправлено sergtv , 13-Июн-09 20:22 
>Идея в чем: нужен скрипт, который бы выполнился при пропадении питания и
>корректно выключил второй сервер (на ФРЕ) по SSH.
>
>Никто не пробовал такое, и вообще возможно-ли это?
> но может есть вариант проще ???

Есть! Советую поставить на Фре knockd. почитайте про порткнокинг. Вы посылаете Фришной машине три пакета на заданные порты и она запускает любой узазанный Вами скрипт. Много удобнее чем страдать по SSH (я тоже когда-то так-же мучился :-) ) Порт-кнокинг клиент есть под ХР- knock.exe


"автоматическое выключение сервера по SSH"
Отправлено Smile , 14-Июн-09 11:43 
Если организовать типовую схему SSH-аутентификации по ключу неудобно, и Вы "мучился", не осилив ssh-keygen... тогда лучше убейте фрёвый сервер в пользу виндового, чтобы он не страдал от решений типа "порткнокинг".

"Много удобнее чем страдать по SSH"... скажут же такое.


"автоматическое выключение сервера по SSH"
Отправлено sergtv , 14-Июн-09 19:07 
>Если организовать типовую схему SSH-аутентификации по ключу неудобно, и Вы "мучился", не
>осилив ssh-keygen... тогда лучше убейте фрёвый сервер в пользу виндового, чтобы
>он не страдал от решений типа "порткнокинг".
>
>"Много удобнее чем страдать по SSH"... скажут же такое.

Каждый волен выбирать что кому удобнее. Я пробовал методом коннекта юзера по SSH  и методом knockd. Временные затраты на первое решение оказались больше. Второе ИМХО для локалки удобнее и проще, подчеркиваю -ИМХО. И ни в коем случае не настаиваю. А с ssh-keygen и аутентификацией по ключу все нормально, и напрасно Вы решили что кто-то что-то не осилил.


"автоматическое выключение сервера по SSH"
Отправлено Sarge , 14-Июн-09 09:24 
Есть хороший демон для упс - apcupsd. Он всё это умеет, надо только проверить его совместимость с вашей упс.

http://www.opennet.me/base/sys/apcupsd.txt.html


"автоматическое выключение сервера по SSH"
Отправлено Smile , 14-Июн-09 11:46 
>Есть хороший демон для упс - apcupsd. Он всё это умеет, надо
>только проверить его совместимость с вашей упс.
>
>http://www.opennet.me/base/sys/apcupsd.txt.html

может ошибаюсь, но этот демон заточен для продукции APC.


"автоматическое выключение сервера по SSH"
Отправлено masters , 14-Июн-09 15:07 
>Есть хороший демон для упс - apcupsd. Он всё это умеет, надо
>только проверить его совместимость с вашей упс.

Если бы Вы внимательней читали, то поняли бы что УПС на серваке с ФРЕЙ не "умный". Из 2х УПСов управляемый только один, поэтому и нужен именно вариант, когда один сервер гасит второй.

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


"автоматическое выключение сервера по SSH"
Отправлено Sarge , 14-Июн-09 15:23 
>Если бы Вы внимательней читали, то поняли бы что УПС на серваке
>с ФРЕЙ не "умный". Из 2х УПСов управляемый только один, поэтому
>и нужен именно вариант, когда один сервер гасит второй.

Еслиб вы вообще хотя бы почитали ссылку, которую я дал, то смогли бы прочитать там, что больше одного "умного" УПСа для apcupsd и не требуется.


"автоматическое выключение сервера по SSH"
Отправлено masters , 14-Июн-09 17:46 
>Еслиб вы вообще хотя бы почитали ссылку, которую я дал, то смогли
>бы прочитать там, что больше одного "умного" УПСа для apcupsd и
>не требуется.

У меня наоборот, умный УПС на Винде. Попробую эту схему обратным образом реализовать, провда УПС у меня MGE а не APC. Прога может не подойти...

Кстати на сайте MGE есть тоже проги для Линукса, которые работают и по сети. Жаль что у меня в этой фре нет эмулятора Линукса, я так понял в версиях х64 он не ставится :(


"автоматическое выключение сервера по SSH"
Отправлено Grey , 14-Июн-09 18:00 
>[оверквотинг удален]
>>не требуется.
>
>У меня наоборот, умный УПС на Винде. Попробую эту схему обратным образом
>реализовать, провда УПС у меня MGE а не APC. Прога может
>не подойти...
>
>Кстати на сайте MGE есть тоже проги для Линукса, которые работают и
>по сети. Жаль что у меня в этой фре нет эмулятора
>Линукса, я так понял в версиях х64 он не ставится :(
>

я когда-то делал у себя: винда с помощью putty логинилась на фрю из коммандной строки "парашюта" (точнее он выдавал такую команду) логинилась по сгенерённым ключам (генерил в putty), логинилась на фрю под юзером ,у которого вместо шела было "shutdown -p now", на фре было ограничение на возможность залогиниться с определённого IP.
Думаю вполне себе решение....


"автоматическое выключение сервера по SSH"
Отправлено masters , 14-Июн-09 18:45 
>я когда-то делал у себя: винда с помощью putty логинилась на фрю
>из коммандной строки "парашюта" (точнее он выдавал такую команду) логинилась по
>сгенерённым ключам (генерил в putty), логинилась на фрю под юзером ,у
>которого вместо шела было "shutdown -p now", на фре было ограничение
>на возможность залогиниться с определённого IP.
>Думаю вполне себе решение....

напиши плз как путти запускал - параметры...


"автоматическое выключение сервера по SSH"
Отправлено PavelR , 14-Июн-09 19:07 
>>я когда-то делал у себя: винда с помощью putty логинилась на фрю
>>из коммандной строки "парашюта" (точнее он выдавал такую команду) логинилась по
>>сгенерённым ключам (генерил в putty), логинилась на фрю под юзером ,у
>>которого вместо шела было "shutdown -p now", на фре было ограничение
>>на возможность залогиниться с определённого IP.
>>Думаю вполне себе решение....
>
>напиши плз как путти запускал - параметры...

d:\Program Files\putty\plink.exe" -noagent -l shdwn_user -i "d:\Program Files\putty\keys\key_wopassphrase.ppk" host_to_shutdown_ip


на сервере (FreeBSD) создан пользователь shdwn_user, включенный в группу operator. Создан каталог .ssh, в нем файл authorized_keys со значением

command="shutdown -p now",no-pty,no-port-forwarding ssh-dss <key> <keycomment>

уточнение для параноиков: в эту строку можно добавить параметр from=trusted_host_ip

[root@host ~]# ls -l /sbin/shutdown
-r-sr-x---  1 root  operator  10756  4 май 02:15 /sbin/shutdown


"автоматическое выключение сервера по SSH"
Отправлено Sarge , 15-Июн-09 03:38 
>У меня наоборот, умный УПС на Винде. Попробую эту схему обратным образом

та заметка от 2005-го года вроде, щас уже и на винде можно умный держать.

>реализовать, провда УПС у меня MGE а не APC. Прога может
>не подойти...

а вот тут да, не подойдёт эта прога


"автоматическое выключение сервера по SSH"
Отправлено AdVv , 14-Июн-09 22:12 
>[оверквотинг удален]
>не только вуключать комп но и выполнять разные комманды/программы.
>
>Идея в чем: нужен скрипт, который бы выполнился при пропадении питания и
>корректно выключил второй сервер (на ФРЕ) по SSH.
>
>Никто не пробовал такое, и вообще возможно-ли это?
>
>P.S. когда-то давно писал программку на Делфи, которая управляла роутером по Телнет
>с использованием стандартной компоненты. Впринципе можно найти SSH - компоненты под
>Делфи (даже видел уже), но может есть вариант проще ???

Не изобретайте велосипедов, используйте NUT
http://www.opennet.me/prog/info/2329.shtml


"автоматическое выключение сервера по SSH"
Отправлено sonkilla , 15-Июн-09 09:26 
есть более легкое но не лучшие решение пишем скрипт каторый каждые n минут пингует комп с хп и еше несколько хостов если не один неотзываеться то он вырубает машину.единственное нужно правельно подобрать значение n и все) нагами просьба не пинать за такое решение но всеже оно работает)

"автоматическое выключение сервера по SSH"
Отправлено masters , 15-Июн-09 14:11 
>есть более легкое но не лучшие решение пишем скрипт каторый каждые n
>минут пингует комп с хп и еше несколько хостов если не
>один неотзываеться то он вырубает машину.единственное нужно правельно подобрать значение n
>и все) нагами просьба не пинать за такое решение но всеже
>оно работает)

Думаю не получится, на свичах настроен контроль ICMP, нормально попинговать не получится.


"автоматическое выключение сервера по SSH"
Отправлено masters , 15-Июн-09 15:28 
>Не изобретайте велосипедов, используйте NUT
>http://www.opennet.me/prog/info/2329.shtml

Почему-то не увидел тут ничего под винду...


"автоматическое выключение сервера по SSH"
Отправлено Дмитрий , 15-Июн-09 10:24 
Делать флаг-файл на фряхе и уже по нему определять надо-ли завершать работу, имхо, можно несколькими способами:

1. фтп
2. rsh
3. rexec
4. sftp
5. ssh через пару ключей и скриптом

Для безопастности можно настроить, чтобы все вышеперечисленное можно было выполнять только с нужной виндовой машины и больше ни откуда. Да что говорить, если настроить разрешение работать только с виндовой машины можно и телнет поднять, и уже через него скриптом формировать файл-ключь. Я в свое время также работал с виндовских машин на SCO Open Server-е где кроме телнета (rsh не проходил, т.к. запускаемый скрипт был интерактивный, а с рш это не проходило) ничего не было для управления.


"автоматическое выключение сервера по SSH"
Отправлено masters , 15-Июн-09 16:05 
>на сервере (FreeBSD) создан пользователь shdwn_user, включенный в группу operator. Создан каталог .ssh, в нем файл authorized_keys со значением
>command="shutdown -p now",no-pty,no-port-forwarding ssh-dss <key> <keycomment>

Где создавать этот каталог? На сервере в папке юзера? И что вместо key и keycomment писать ???

Создал в папке пользователя, чтроку вбил вашу, ничего не менял - и не помогло. Логинится, но не выключается.


"автоматическое выключение сервера по SSH"
Отправлено masters , 15-Июн-09 16:38 
>Где создавать этот каталог? На сервере в папке юзера? И что вместо
>key и keycomment писать ???
>
>Создал в папке пользователя, чтроку вбил вашу, ничего не менял - и
>не помогло. Логинится, но не выключается.

Сделал проще, в файле .shrc юзера прописал /sbin/halt

Только вот трабл: пишет Operation not permitted :( Вроде юзера в группу операторы завел...


"автоматическое выключение сервера по SSH"
Отправлено Smile , 15-Июн-09 17:47 
>>Где создавать этот каталог? На сервере в папке юзера? И что вместо
>>key и keycomment писать ???
>>
>>Создал в папке пользователя, чтроку вбил вашу, ничего не менял - и
>>не помогло. Логинится, но не выключается.
>
>Сделал проще, в файле .shrc юзера прописал /sbin/halt
>
>Только вот трабл: пишет Operation not permitted :( Вроде юзера в группу
>операторы завел...

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


"автоматическое выключение сервера по SSH"
Отправлено masters , 15-Июн-09 18:12 
>интересно, через сколько итераций Вы полностью перейдете к моему варианту =).

не дошел :)

решил проблему через sudo (совсем забыл про него почему-то).

Вообщем вот выкладываю кому интересно:

1) создаю на ФРЕ shdwn_user.
2) в .shrc ему добавляю sudo /sbin/halt
3) на винде в программе Eaton UPS в Shutdown Configuration выбираю Shutdown Script
4) редактировать скрипт - в самом конце перед "shutdown.exe -shutdown" добавляю строчку: "c:\Program Files\putty\plink.exe" -noagent -l shdwn_user -pw <password> <server IP>

P.S. только что пришла идея. Чтобы зря не убивать батарею УПСа - не делать Халт, а делать Шатдаун. А потом запускать этот сервер через Wake On Lan с виндового сервака. Никто такое не пробовал ???


"автоматическое выключение сервера по SSH"
Отправлено Smile , 15-Июн-09 18:54 
>[оверквотинг удален]
>1) создаю на ФРЕ shdwn_user.
>2) в .shrc ему добавляю sudo /sbin/halt
>3) на винде в программе Eaton UPS в Shutdown Configuration выбираю Shutdown
>Script
>4) редактировать скрипт - в самом конце перед "shutdown.exe -shutdown" добавляю строчку: "c:\Program Files\putty\plink.exe" -noagent -l shdwn_user -pw <password> <server IP>
>
>P.S. только что пришла идея. Чтобы зря не убивать батарею УПСа -
>не делать Халт, а делать Шатдаун. А потом запускать этот сервер
>через Wake On Lan с виндового сервака. Никто такое не пробовал
>???

принципе, если вариант логина всемогущего пользователя (я так понял он из группы wheel  и sudo для него сделано без пароля - имхо, моветон) устраивает, то осталось убедиться, в том, что свитч между виндовым сервером и фревым тоже висит на УПСе =)



"автоматическое выключение сервера по SSH"
Отправлено Warhead Wardick , 15-Июн-09 21:05 

>>1) создаю на ФРЕ shdwn_user.
>>2) в .shrc ему добавляю sudo /sbin/halt
>принципе, если вариант логина всемогущего пользователя (я так понял он из
>группы wheel и sudo для него сделано без пароля - имхо, моветон) устраивает,

Вот тупой то, прости гоподи! Для тебя же черным по желтому подробно раписали!
То есть из привелигированных комманд shdwn может только /sbin/halt! (Я бы всё же заюзал shootdown)

>то осталось убедиться, в том, что свитч между виндовым
>сервером и фревым тоже висит на УПСе =)

Ты гляди - есть таки надежда, не полный ФГМ то, только частичный ... может и вылечишся.


"автоматическое выключение сервера по SSH"
Отправлено Smile , 16-Июн-09 07:41 
>[оверквотинг удален]
>Вот тупой то, прости гоподи! Для тебя же черным по желтому подробно
>раписали!
>То есть из привелигированных комманд shdwn может только /sbin/halt! (Я бы всё
>же заюзал shootdown)
>
>>то осталось убедиться, в том, что свитч между виндовым
>>сервером и фревым тоже висит на УПСе =)
>
>Ты гляди - есть таки надежда, не полный ФГМ то, только частичный
>... может и вылечишся.

дружок, ты либо хам, либо не читаешь, либо ошибся урлом.


"автоматическое выключение сервера по SSH"
Отправлено Pain , 16-Июн-09 07:51 
>дружок, ты либо хам, либо не читаешь, либо ошибся урлом.

Естественно он - хам. (Тебе его ник перевести?)
НО! Сказал он исключительно правду и исключительно по-делу :)


"автоматическое выключение сервера по SSH"
Отправлено Smile , 16-Июн-09 10:07 
>>дружок, ты либо хам, либо не читаешь, либо ошибся урлом.
>
>Естественно он - хам. (Тебе его ник перевести?)
>НО! Сказал он исключительно правду и исключительно по-делу :)

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


"автоматическое выключение сервера по SSH"
Отправлено masters , 16-Июн-09 23:52 
>Он посоветовал человеку заводить судоера, ограничивать ему права гашением кампутера.

Да, извиняюсь что не расписал. У пользователя shdwn_user действительно в SUDO разрешен только halt. Это не wheel и никаких лишних привелегий у него нет.

>Я посоветовал
>создать серого пользователя, создающего файл-флаг и повесить в крон скрипт на
>проверку. Оба вариант рабочие, но я предпочел бы 2 вариант просто
>от паранои, что есть лишний судоер. Каждому свое.

Кроме меня сервер никто не трогает, наружу все порты управления закрыты а внутри сети одни ламеры (оффис, 80% женщины которые свой компьютер с трудом могут включить). Так что я думаю для меня этого уровня безопасности вполне хватит :)

Насчет WakeOnLan думаю пока притормозить. Всеравно даже если сервер выключить - свичи и маршрутизаторы разрядят ИБП. Просто следующему новому юзеру отдам этот ИБП а на сервер с ФРЕй возьму новый с управлением :)


"автоматическое выключение сервера по SSH"
Отправлено Sarge , 17-Июн-09 05:39 
>и маршрутизаторы разрядят ИБП. Просто следующему новому юзеру отдам этот ИБП
>а на сервер с ФРЕй возьму новый с управлением :)

Новый берите от фирмы apc - меньше проблем с управлением под любой ОС :)