Удаленное выключение компьютера через MajorDoMo
Итак по мере того, как начинаешь пользоваться изучаемым и из просмотра различных видео обзоров встает задача на первый взгляд тривиальная, но не все так легко как может показать на первых взгляд. Сегодня речь пойдет, как используя сервис MajorDoMo производить удаленное выключение систем Windows и Ubuntu дома , где в роли командного устройства выступит Ваш смартфон/планшет под управлением операционной системы Android с установленным приложением MajorDroid.
Что лень выключить за собой компьютер?, да не ужели для этого нужно думать как сделать это удаленно и главное голосом. Тут можно возразить, лишний опыт никогда не будет лишним, да и пусть работающий сервис MajorDoMo выполняет столь важную задачу, как выключение ПК после того, как я ушел из комнаты, ложусь спать и т. д. Главное что данную задачу я решил поставив себе задачу, ведь она практична и полезна. В текущее время смартфон это не просто средство общения, но и полезный друг всей жизни который всегда при Вас, он дает общение, доступ в интернет, развлечения, работу так пусть и будет связующим звеном между Вами и сервисом MajorDoMo.
Сервис MajorDoMo развернут на базе серии заметок моего Youtube-канала.
Шаг №1: Чтобы выключить Windows 7 SP1 x86/x64 систему в локальной сети (система не в домене, а в локальной группе). Ниже Как я подходил к решению данной задачи.
Сделать PHP скрипт с формой html где я вбиваю IP, User, Password и нажимаю «Выключить» и в ответ удаленный компьютер выключается. Но после от формы я отказался.
$ sudo rm -Rf /var/lib/apt/lists
$ sudo apt-get update && sudo apt-get upgrade -y
$ sudo apt-get install samba-common-bin -y
На заметку: на своем домашнем компьютере я работаю с правами Администратора, UAC включен и обязательно использую связку Login + Password, а до этого следует нажать сочетание клавиш Ctrl + Alt + Del.
$ sudo net rpc shutdown -t 3 -f -C shutdown -U Admin%Aa1234567 -I 10.9.9.96
Could not initialise pipe winreg. Error was NT_STATUS_OBJECT_NAME_NOT_FOUND
Чтобы все таки команда выше отработала нужно на Windows системе сделать следующее:
включить службу «Удаленный реестр»
C:\Windows\system32>sc config RemoteRegistry start= auto
C:\Windows\system32>sc start RemoteRegistry
выключить профили встроенного брандмауера
C:\Windows\system32>netsh advfirewall set allprofiles state off
Пробую еще раз запустить команду с Raspberry Pi 3 на выключение Windows системы:
$ sudo net rpc shutdown -t 3 -f -C shutdown -U Admin%Aa1234567 -I 10.9.9.96
Shutdown of remote machine failed
result was: WERR_CALL_NOT_IMPLEMENTED
В этом случае на Windows системе нужно сделать следующее:
C:\Windows\system32>reg add HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System /v LocalAccountTokenFilterPolicy /t REG_DWORD /d 1 /f
Операция успешно завершена.
C:\Windows\system32>shutdown /r /t 3
Пробую еще раз запустить команду с Raspberry Pi 3 на выключение Windows системы:
$ sudo net rpc shutdown -t 3 -f -C shutdown -U Admin%Aa1234567 -I 10.9.9.96
Shutdown of remote machine succeeded
Заработало, Windows 7 x86/x64 SP1 Pro успешно выключилась и на экране уведомление что система выключается:
В этом окне можно написать все что необходимо знать пользователю почему его система выключилась.
На заметку: И с моим тестовым паролем 712mbddr@ выключение также происходит.
Шаг №2: Чтобы теперь сервис MajorDoMo смог выключить Windows систему нужно проделать следующие настройки
www-data ALL=(ALL) NOPASSWD:ALL
Чтобы сценарий выключения Windows компьютера отработал нужно добавить сценарий:
http://IP&DNS — Панель управления — (Объекты) Сценарии — Добавить новый сценарий
- Название: shutdown_windows
и нажимаю «Добавить», затем Код: PHP
$shutdown = shell_exec(«/usr/bin/net rpc shutdown -t 3 -f -C shutdown -U Admin%Aa1234567 -I 10.9.9.96»);
После нажимаю «Сохранить»
Шаг №3: Теперь когда есть отрепетированные строки выключения Windows системы исполнить задуманную задачу через MajorDoMo можно следующими способами:
- Либо через «Шаблон поведения»
http://IP&DNS — Панель управления — (Объекты) Шаблоны поведения — Добавить новую запись
- Название: Выключить ПК
нажимаю «Добавить»
- Шаблон: [В^в]ыключить комп
- Выполнить при совпадении: Сценарий: выбираю shutdown_windows
и нажимаю «Сохранить»
Теперь если на главной странице набрать команду: «выключить комп» и нажать «Отправить», команда успешно отрабатывает и удаленная система указанная в Сценарии выключается.
либо через приложением «MajorDroid»
Включаю свой смартфон Huawei Honor C5, запускаю Play Market, вбиваю в поиск слово: majordroid и вижу среди найденного несколько одинаково обозванных приложений, я же использую MajorDroid (от Artem Galaktionov), устанавливаю его.
После установки запускаю, тут нужно настроить само приложение , перехожу в элемент настройки «Настройки»
- Режим доступа: Автоматически
- Интерфейс: Обычный
- Локальный адрес: 10.9.9.161
- Глобальный адрес: как DNS так и статический IP, я применяю связку Mikrotik + DNS и проброс порта из вне в домашнюю сеть, а потому адрес принимает вид: home.ekzorchik.ru:23466 (в реале же URL адрес другой)
- Домашняя WiFi-сеть: network
- Логин: ekzorchik (в реале же логин намного сложнее)
- Пароль: 712mbddr@ (в реале же пароль намного сложнее)
- Привязка кнопок пульта:
Кнопка 1 → shutdown_windows
и если все настройки в программе сделаны корректно, то перейдя на главную страницу приложения MajorDroid вы должны увидеть свою страницу, в моем же случае это страница с текущей погодой от сервиса OpenWeatherMap.
если сказать голосом в предварительно выбранное меню с иконкой микрофона слово: «выключить пк», то отработает «Шаблон поведения»
если перейти в меню с иконкой изображенного пульта и нажать на кнопку 1, то отработает «Скрипт»
Итого: Задача по удаленному выключению домашнего ПК через сервис MajorDoMo выполнена.
На заметку: Важно чтобы на учетную запись Windows обладающую правами локального администратора был установлен логин и пароль
Шаг №4: Как с Raspbian Jessie выключить домашнюю Ubuntu Trusty Desktop (настроен AutoLogon) станцию через PHP скрипт:
$ sudo apt-get install sshpass -y
$ /usr/bin/sshpass -p 712mbddr@ ssh -o StrictHostKeyChecking=no ekzorchik@10.9.9.108 ‘echo 712mbddr@ | sudo -S shutdown -r now’
$ /usr/bin/sshpass -p 712mbddr@ ekzorchik@10.9.9.108 ‘echo 712mbddr@ | sudo -S poweroff’
и с учетом все этого, PHP скрипт будет следующим и делается он по аналогии, как я выключал Windows станцию.
say(«Выключаю домашний компьютер»,2);
$shutdown = shell_exec(«/usr/bin/sshpass -p 712mbddr@ ssh -o StrictHostKeyChecking=no ekzorchik@10.9.9.108 ‘echo 712mbddr@ | sudo -S shutdown -r now'»);
10:07 Алиса: Выключаю домашний компьютер
10:07 Admin: выключить компьютер
Не спорю, что данную задачу можно дополнить такими шагами, как проверка что компьютер выключен, есть ли связь с данным компьютером, отработала ли команда т. д. Если кому надо, то он уже сам должен разобраться с этим.
Заметка работоспособна. Конечно в ней как я сказал выше есть что доработать, но вот об этом и много другом как-нибудь в другой раз. А пока я прощаюсь с Вами читатели моего блога, с уважением автор Олло Александр aka ekzorchik.
Используйте прокси ((заблокировано роскомнадзором, используйте vpn или proxy)) при использовании Telegram клиента:
Поблагодари автора и новые статьи
будут появляться чаще 🙂
Карта МКБ: 4432-7300-2472-8059
Большое спасибо тем кто благодарит автора за практические заметки небольшими пожертвованиями. С уважением, Олло Александр aka ekzorchik.
Источник
Peter Dave Hello’s Blog
To live is to make the world better.
Remotely shutdown/restart Windows via Linux on Debian/Ubuntu based Linux
Need samba-common package first, install via apt:
Then use this command to shutdown the computer remotely(replace ip , username and password with your own):
Add -r if you want to restart, not shutdown:
After execution, here is the success message:
Shutdown of remote machine succeeded
If receive these messages below means something failed:
Could not connect to server 192.168.1.55
Connection failed: NT_STATUS_IO_TIMEOUT
Connection failed: NT_STATUS_RESOURCE_NAME_NOT_FOUND
Could not initialise pipe winreg. Error was NT_STATUS_OBJECT_NAME_NOT_FOUND
There are many functions provide by net [rpc], like:
net rpc audit Modify global audit settings
net rpc info Show basic info about a domain
net rpc join Join a domain
net rpc oldjoin Join a domain created in server manager
net rpc testjoin Test that a join is valid
net rpc user List/modify users
net rpc password Change a user password
net rpc group List/modify groups
net rpc share List/modify shares
net rpc file List open files
net rpc printer List/modify printers
net rpc changetrustpw Change trust account password
net rpc trustdom Modify domain trusts
net rpc abortshutdown Abort a remote shutdown
net rpc shutdown Shutdown a remote server
net rpc samdump Dump SAM data of remote NT PDC
net rpc vampire Sync a remote NT PDC’s data into local passdb
net rpc getsid Fetch the domain sid into local secrets.tdb
net rpc rights Manage privileges assigned to SID
net rpc service Start/stop/query remote services
net rpc registry Manage registry hives
net rpc shell Open interactive shell on remote server
net rpc trust Manage trusts
net rpc conf Configure a remote samba server
Check man rpc for more details!
Источник
Net rpc shutdown linux
In order to enable Alexa to be able to shutdown window PC in our home using voice commands I needed to start by being able to perform the task from my Linux machine using a shell script.
There are a few hurdles I cam across when I was working through setting this up on my windows 10 Pro Desktop.
1. Firewall
If your Linux PC is on the same LAN and in the same IP subnet but is unable to connect to your windows desktop which is evident with returned errors talking of TIMEOUT then try disabling your firewall temporarily for troubleshooting.
- Step 1: Open the Control Panel. Hold down the Windows key ( ) and press “X”. Select “Control Panel” in the menu.
- Step 2: Open Windows Firewall Settings. In the Control Panel select “System and Security” …
- Step 3: Disable the Firewall. Ensure that both the private and public network firewalls are turned off.
It is recommended that you turn on the firewall after trouble shooting and add an exception for RPC instead, OR if you network type is set to Public and is better suited to be classified as Private then simply change the network type as shown below.
Change Network Category
Open PowerShell with administrative privileges
Run the following command:
See the network name you want to change its type and run the following command:
Set-NetConnectionProfile -Name “NETWORKNAME” -NetworkCategory Private
Where NETWORKNAME is the name of your network and you can change the -NetworkCategory switch value to Public or Private.
From your Linux PC try:
If this connects then the firewall is either disabled or configured to pass the RPC traffic through to your desktop.
Example of a successful connection
# telnet 192.168.0.65 445
Trying 192.168.0.65…
Connected to 192.168.0.65.
Escape character is ’^]’.
2. UAC (User Account Control)
If you run the ‘net rpc shutdown’ command and see a response similaar to this:
result was: WERR_CALL_NOT_IMPLEMENTED
To solve this temporarily you could simply disable the UAC but this is certainly not a great position to leave your desktop. I am satisfied with the workaround provided below but you may think differently.
The credit for the UAC workaround goes to Lowell Heddings, better known online as the How-To Geek.
By default your desktop doesn’t allow UAC elevation over the network with a local user account.
There’s a registry key that we can use to change this behavior to work the same as Windows XP. This will make your computer less secure, and I can’t recommend that you do this… but it’s also good to understand how Windows works.
Manual Registry Hack
Open regedit.exe through the start menu search or run box, and then navigate down to the following key, creating a new key if it doesn’t exist.
On the right-hand side, add a new 32-bit DWORD value named LocalAccountTokenFilterPolicy and set the value to 1.
To remove this tweak you can set the value to 0 or just delete the key.
3. Remote Registry Service
Another error that you may come across when running the ‘net rpc shutdown’ command is this:
could not initialise pipe \winreg. Error was NT_STATUS_OBJECT_NAME_NOT_FOUND
Try running services.msc, scroll down to ‘Remote Registry and make sure it is set to automatic and started (running) then try again.
Linux PC
On your Linux PC use the following command (try apt-get install samba-common if its not already available).
net rpc shutdown -I WIN.IP.ADDR -U USER%PASSWORD
All going well the Windows PC should advise the user they are being signed out and then shutdown.
In a future Post I will look at extending this to explain how to make Alexa shutdown the PC upon request using a script.
Источник