Когда монитор обнаруживает, что сервер ведёт себя не должным образом, нужно попробовать перезапустить сначала сервис, затем, если не помогло, "мягко" выключить и включить виртуальную машину с ним, после пробовать перезапускать остальные глючные компоненты системы. Причём сделать всё это нужно удалённо, с другой машины. И у меня проблемы с перезапуском сервиса на windows и корректным выключением windows-машины.
Попытки решить одну частную задачу - перезапустить сервис через
Код
wmic -U USERNAME%PASSWORD //ADDRESS 'service where caption="SVCNAME" call startservice'
или Код
net rpc -I ADDRESS -U USERNAME%PASSWORD service {stop|start} SVCNAME
не привели к успеху, гугление и копание никакого эффекта не дало. Хочется, чтобы подобных проблем не возникло и в дальнейшем - решение по возможности должно основываться на открытом и стандартном протоколе, должно позволять запускать на удалённом windows любой понравившийся код.Мне видятся следующие варианты решений:
- Поискать существующие решения - поставить SSH-сервер, настроить авторизацию по ключу и запускать с сервера монитора что-то вроде Кодssh ADDRESS 'net stop SVCNAME; net start SVCNAME'Минус решения - openssh под windows не обновлялся с 2004 года, в сети описаны проблемы при поднятии сервера и авторизации по ключу. Прочие SSH-сервера либо хотят денег, либо в таком же, плачевном состоянии.
Cygwin мне так же отсоветовали из-за его кривоухости. - Использовать вместо ssh существующий telnet service. Не подошло, так как после открытия, закрытия подключения и открытия нового windows сделал вид, что лимит подключений исчерпан и отказался обслуживать телнет-клиента. Такие баги в этой задаче недопустимы.
- Собственноручно написанный сервис. Мне влом осваивать сервисописание под windows. Если есть какая-то программа вроде линуксового daemon, делающая демон из любого понравившегося скрипта, это было бы очень кстати. В сети есть упоминание некоего srvany, но, как я понимаю, она работает только с exe-шниками и непонятно, где её можно, такую хорошую, скачать.
- Ежеминутно запускаемый из планировщика скрипт, проверяющий наличие определённого файла в определённом месте на определённом самба-сервере. И таким вот макаром реализовать обмен данными между серверами. Кривое решение само по себе.
- Поднять веб-сервер, CGI-скрипт. Ну или не CGI - apache+mod_python тоже подойдут. Решение возможно, но тяжеловато.
Идеальным было бы, конечно, первое решение, как наиболее стандартная и знакомая схема выполнения программы на удалённой машине.
Все эти вопросы я рассмотрел поверхностно. Вполне вероятно, я что-то упустил и решение лежит на поверхности, ведь не может такая элементарная задача решаться таким сложным образом.
Идеи, соображения, мысли?