RFC (Request for Comments, Запрос на комментарии) - серия документов, публикуемая сообществом исследователей и разработчиков, руководствующихся практическими интересами, в которой описывается набор протоколов и обобщается опыт функционирования Интернет.
Понадобилось мне выключать компы с Windows из FreeBSD. Все для того чтобы сервак сам вырубал другие серваки и машины при осутствии электричества. Немного погуглив, ничего вразумительного не нашел. В итоге махнул рукой и подумал, а напишу ка я свой софт для этого дела, чтоб компы можно было вырубать по сети. Так и сделал. За пол дня написал софт под unix на С и под windows на Delphi. Возможно я изобрел велосипед, но для меня так проще. =).
Софт позволяет:
Удаленно из консоли вырубать компы с ОС Windows из FreeBSD, linux, Windows Удаленно выполнять комманду на Windows (из FreeBSD, linux, Windows) которая может например запускать какойто скрипт правильно все вырубающий, быкапящий итд.
Завершать работу или выполнять комманду можно только зная ip, порт, и пароль. Комманду можно выполнять только ту которая прописана в конфиге софта который установлен на машине которую нужно вырубить, т.е нельзя выполнять всякие левые удаленные комманды в целях безопасности.
Софт состоит из трех программ:
wudown - консольная программа для unix, linux. При запуске отправляет UDP пакет с указанными в нем IP адресом, портом, паролем. wudown.exe - тоже самое только для windows wudsvc.exe - сервис для windows который инсталлируется в систему как служба, слушает заданный UDP порт, и если на него приходит пакет с правильным паролем то вырубает комп, или выполняет комманду если она указана в файле настроек (settings.ini). Также пишет лог в файл log.txt о том когда и с какого ip пришла комманда на вырубание.
Настройка Windows
Вся суть настройки сходится в установке и настройки сервиса (службы), инсталлировать ничего ненужно. Качаем софт по ссылке внизу, распаковываем и заходим в папку windows, в ней лежат две папки, wudown и wudown_svc. Берем вторую wudown_svc и ложим куданибудь на диск C: запускаем service_install.cmd, должно появиться "Service installed successfully!" Затем открываем settings.ini и видим
[wudown] port=1209 pass=shutdown exec=
тут все наглядно и просто, указываем порт который слушать, пароль. В exec= указывается комманда или файл который нужно выполнить. Если в exec будет указан путь или комманда например calc.exe, тогда сервис не будет вырубать комп, а только выполнит то что указано в exec=. В общем что-то одно, или вырубить или выполнить комманду.
Хочу заметить, что сервис, т.к. он сервис, то что он выполняет - выполняется в фоновом режиме и если есть какието Окна у выполняемого приложения (например calc.exe) они не будут рисоваться на экране. Но процесс будет успешно работать и висеть в диспетчере до завершения.
Итак, службу установили, конфиг настроили, терерь запускаем: service_start.cmd. На этом настройка вырубаемой машины закончена, не забудьте про фаервол и порт. В папке src лежат исходники этого сервиса на delphi 7
Теперь, для того чтоб вырубить этот комп по сети, нужно выполнить:
wudown.exe 192.168.0.1 1209 shutdown
где 192.168.0.1 - ip адрес вырубаемой машины, 1209 - порт, shutdown - пароль.
При поступлении комманды на удаленную машину, если правильно указан пароль, в файле log.txt в директории сервиса добавиться запись о том с какого ip адреса была принята комманда на вырубание.
Теперь для FreeBSD
Тамже в распакованном архиве видим папку unix, в ней лежит архив wudown.tar.gz распаковав который увидим два файла: wudown - готовая откомпилированная программа wudown.c - исходники кому нужно. использование такое же как и с wudown.exe.
Сетевая установка:
# mkdir /usr/local/etc/wudown # cd /usr/local/etc/wudown # fetch http://zg.odmining.ru/files/projects/wudown.tar.gz # tar -xzvf wudown.tar.gz x wudown x wudown.c # ./wudown 192.168.0.1 1209 shutdown
Еще для удобства можно скопировать в /usr/local/bin/ и сделать rehash чтоб можно было пользоваться откуда угодно.