Как удалить majordomo с ubuntu

Обновлено: 06.07.2024

Итак по мере того, как начинаешь пользоваться изучаемым и из просмотра различных видео обзоров встает задача на первый взгляд тривиальная, но не все так легко как может показать на первых взгляд. Сегодня речь пойдет, как используя сервис 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 компьютера отработал нужно добавить сценарий:

и нажимаю «Добавить», затем Код: 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 можно следующими способами:

нажимаю «Добавить»

  • Шаблон: [В^в]ыключить комп
  • Выполнить при совпадении: Сценарий: выбираю shutdown_windows

и нажимаю «Сохранить»

либо через приложением «MajorDroid»

Включаю свой смартфон Huawei Honor C5, запускаю Play Market, вбиваю в поиск слово: majordroid и вижу среди найденного несколько одинаково обозванных приложений, я же использую MajorDroid (от Artem Galaktionov), устанавливаю его.

После установки запускаю, тут нужно настроить само приложение , перехожу в элемент настройки «Настройки»

Кнопка 1 → shutdown_windows

и если все настройки в программе сделаны корректно, то перейдя на главную страницу приложения MajorDroid вы должны увидеть свою страницу, в моем же случае это страница с текущей погодой от сервиса OpenWeatherMap.

Текущая погода через сервис 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: выключить компьютер

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

Используйте прокси ((заблокировано роскомнадзором, используйте vpn или proxy)) при использовании Telegram клиента:

Поблагодари автора и новые статьи

будут появляться чаще :)

Карта МКБ: 4432-7300-2472-8059

Большое спасибо тем кто благодарит автора за практические заметки небольшими пожертвованиями. С уважением, Олло Александр aka ekzorchik.

Пошаговая инструкция с картинками по установки MajorDoMo на Raspberry Pi 3 с помощью скрипта от Immortal

Решил написать пошаговую инструкцию с картинками по установки MajorDoMo на Raspberry Pi 3 c помощью скрипта от Immortal.


Используем по умолчанию: логин PI, пароль raspberry
Вводимые символы пароля не отображаются
Запускаем утилиту настройки Raspbery, набрав команду
sudo raspi-config
и нажав Enter

Первым делом проверяем и подключаем доступ по SSH.
В официальном образе системы Raspbian Stretch – отключен.

Меняем пароль по умолчанию, далее конфигурируем свою сеть, в моем случае Wi-Fi вводим ssid (имя сети) и пароль к ней.

Более подробная информация о настройках утилиты конфигурирования находится здесь:


Wiki утилита настройки raspi-config
перегружаемся выполнив команду:
sudo reboot
Вновь авторизовываемся, введя логин и пароль.
Узнаем IP адрес Raspberry, задав команду:
ifconfig
Задав команду ping можем проверить доступ как к беспроводной сети, так и к Internet
Ping 8.8.8.8
Если всё прошло нормально, то видим ответы

Выход из утилиты ping (ды и из многих утилит) ctrl+C
После этого можем работать под удобной и привычной для себя операционной системой.
Выключаем питание. Набрав команду
sudo shutdown
sudo перед командой - запуск команды от имени суперпользователя root
Отключаем кабель HDMI.

3) Работа с одноплатным компьютером через SSH
Для windows 10 привожу пример:

Запускаем программу PuTTY
Появляется окно подключения:

Указываем IP адресс Raspberry :
Далее в настройках выставляем Terminal - Keyboard:

Выставляем кодировку utf8, в Window - Translation

Нажимаем OPEN
Если подключаемся в первый раз, то появляется запрос безопасности системы нажимаем ДА

Запрос логина, а потом и пароля. Как и при первом подключении описан в начале статьи
При вводе пароля как обычно, символы не отображаются.

Небольшие советы по терминалу PuTTY (для начинающих):
*Можно полностью не набирать команды, копируем команду в буфер обмена и правой кнопкой мыши в окне PuTTY, вставляем её в строку с курсором.
Перебор последних команд осуществляется клавишами ↑, ↓.

Дописывание при помощи клавиши [Tab] — если вы введете первые несколько букв имени файла, команды или пути и затем нажмете клавишу [Tab], bash покажет оставшуюся часть имени файла или пути.
При работе с PuTTY, если вы случайно забыли выставить правильные настройки, кодировку, у вас появляется проблема с отображением символов, то можно не закрывать окно, просто правой клавишей мыши кликаем по верхней панели программы и вызываем контекстное меню программы. Далее выбираем пункт: Change Settings.

Так же, при потери соединения (перезагрузке удаленного ПК) в контекстном меню появляется пункт Restart Session.
Набираем в терминале (мышка здесь не работает :-),
sudo -su
Теперь все наши действия будут от имени суперпользователя root до перезапуска или же выхода из режима администратора.
Далее


Вводим команду для просмотра списка всех файловых систем по именам устройств, просмотра их размера, занятое и свободное пространство и точки монтирования.
df -h
При установке оф образа Raspbian используется всё место используемой карты памяти. Если же имеется значительное расхождение от реального объёма карты памяти и информации после вывода команды, можно расширить место с помощью ранее описываемой утилиты raspbi-config
Запускаем утилиту настройки Raspberry raspi-config
Выбираем пункт 7 "Advanced Options", далее пункт A1 "Expand Filesystem" и перегружаемся, в моем случае этот шаг можно пропустить.
хотя я привык к использованию файлового менеджера Midnight Commander или сокращённо MC.
→ Описание в Вики Midnight Commander

Для установки выполняем команду):
apt-get install mc
как помните все команды выполняем от суперпользователя root

  • apt-get — программа для установки, обновления и удаления программных пакетов в операционных системах Linux: Debian и основанных на них (Ubuntu, Linux Mint и др. Способна автоматически устанавливать и настраивать программы для UNIX-подобных операционных систем как из предварительно откомпилированных пакетов, так и из исходных кодов.*
    4) Установка MajorDoMo с помощью скрипта от Immortal


Рекомендую: после установки вернтуться к пункту 1 и запустить USB Image Tool только уже для создания своего образа
но впереди много нового и интересного, и не всё так просто. а образ пригодится и не раз :-)
немного про создание образа.
Итак, установили систему как ОС, так и УД MajorDoMo пока ничего не меняем, создаем свой образ, при случае каких либо проблем (а их я уверяю будет достаточно) всегда можем откатиться и не только MDM, но и всю систему.
Вставляем картц памяти в картридер, запускаем программу USB Image Tool как и в самом начале статьи:
Опять же всего три действия выполняем открываем карту памяти, выбираем действие с ней (backUp), обзываем имя образа:

После этого у нас есть рабочий образ системы и УД. Можно не боясь пробовать что либо делать как с МДМ, так и с самой системой

Все чаще автоматизируя я подхожу к моменту когда мне не достает единого центра управления , а то все разрознено по отдельным скриптам. Поиск по интернету вывел меня на такой проект, как MajorDoMo (Major Domestic Module или Главный Домашний Модуль) — просто и понятно если долго с ним работать, а самое главное то, нужен центр управления который можно использовать на Ubuntu 14.04.5 Trusty Server amd64 системе, быть полностью бесплатным и открытым. В качестве фона/схемы для визуального видения на плане выступит программа именуемая, как Sweet Home 3D которую можно поставить на рабочей системе Ubuntu Trusty Desktop amd64 (Gnome Classic).

А сейчас мне нужно задокументировать все шаги по установке единого центра на систему Ubuntu Trusty 14.04.5 Server amd64

Текущие характеристики системы:

$ sudo rm -Rf /var/lib/apt/lists/

$ sudo apt-get update && sudo apt-get upgrade -y

$ sudo apt-get install linux-generic-lts-xenial linux-image-generic-lts-xenial -y

$ sudo nano /etc/update-manager/release-upgrades

14.04.1-Ubuntu SMP Sat Dec 10 00:14:47 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux

No LSB modules are available.

Distributor ID: Ubuntu

Description: Ubuntu 14.04.5 LTS

$ sudo rm /etc/localtime

$ sudo ln -s /usr/share/zoneinfo/Europe/Moscow /etc/localtime

Синхронизирую время на сервере когда система загружается:

$ sudo apt-get install ntpdate -y

ntpdate: /usr/sbin/ntpdate /usr/share/man/man8/ntpdate.8.gz

ошибок быть не должно

$ sudo nano /etc/profile

$ sudo tasksel install lamp-server

PHP 5.5.9-1ubuntu4.20 (cli) (built: Oct 3 2016 13:00:37)

Copyright (c) 1997-2014 The PHP Group

with Zend OPcache v7.0.3, Copyright (c) 1999-2014, by Zend Technologies

mysql Ver 14.14 Distrib 5.5.53, for debian-linux-gnu (x86_64) using readline 6.3

$ sudo mysql_secure_installation
ekzorchik@srv-server:

$ sudo nano /etc/apache2/apache2.conf

во всех вхождения AllowOverride None

на AllowOverride All

получается четыре вхождения: Replaced 4 occurrences

а после добавляем строку:

ServerName srv-server

$ sudo service apache2 restart

Теперь приводим настройки интерпретатора PHP (Web-сервера) к следующему виду:

$ sudo nano /etc/php5/apache2/php.ini

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

$ sudo nano /etc/php5/cli/php.ini

Скачиваю последнюю версию пакета MajorDoMo и устанавливаю:

$ sudo tar zxf /var/www/_majordomo_linux_100b.tar.gz -C /var/www/

$ sudo cp -rp /var/www/html/* /var/www/

$ sudo cp -rp /var/www/html/.htaccess /var/www

$ sudo rm /var/www/_majordomo_linux_100b.tar.gz

согласно файлу readme.txt в каталоге /var/www/ необходимо выставить следующие права на внутренние каталоги проекта majordomo:

$ sudo find /var/www/ -type d -exec chmod 0777 <> \;

$ sudo find /var/www/ -type f -exec chmod 0666 <> \;

$ sudo chown -R www-data:www-data /var/www/

Проверяем, что у всех каталогов /var/www права вида: rwxrwxrwx, где аббревиатуры означают:

  • r → чтение
  • w → запись
  • x → исполнение

, а у файлов права вида: -rw-rw-rw, где

Но этого мало. Необходимо дать права на доступ к звуку: Т.е. добавить www-data в группу audio. Делаем usermod:

$ sudo usermod -aG audio www-data

Теперь нужно наполнить созданную базу данных структурой, файл структуры беру из архива скачанного проекта majordomo который я распаковал в директорию /var/www/ — файл именуется, как: db_terminal.sql.

Создаю пользователя и пароль и даю полный права на базу db_terminal

$ mysql -u root -p712mbddr@ -e "create database db_terminal character set utf8"

$ mysql -u root -p712mbddr@ db_terminal < /var/www/db_terminal.sql

$ mysql -u root -p712mbddr@ -e "create user 'us_majordomo'@'localhost' identified by '612mbddr@'"

$ mysql -u root -p712mbddr@ -e "grant all on db_terminal.* to 'us_majordomo'@'localhost';"

$ mysql -u root -p712mbddr@ -e "flush privileges;"

Теперь нужно подкорректировать конфигурационный файл из скачанного архива на предмет как подключать к базе и под каким пользователем:

$ sudo nano /var/www/config.php

Удаляю дефолтные настройки Web-cервера по части описания сайта:

$ sudo unlink /etc/apache2/sites-available/000-default.conf

$ sudo unlink /etc/apache2/sites-available/default-ssl.conf

$ sudo unlink /etc/apache2/sites-enabled/000-default.conf

Создаю сайт для приложения Majordomo:

$ sudo nano /etc/apache2/sites-available/majordomo.conf

CustomLog /var/log/apache2/majordomo-access.log combined

Активирую сайт для доступа к странице majordomo на текущем сервере:

$ sudo a2ensite majordomo.conf

Enabling site majordomo.

To activate the new configuration, you need to run:

service apache2 reload

$ sudo service apache2 reload

$ sudo chown -R www-data:www-data /var/www/

Включаю модуль mod_rewrite:

$ sudo a2enmod rewrite

$ sudo chown -R www-data:www-data /var/www

$ sudo service apache2 restart

Теперь захожу на Web-интерфейс:

  • указываю часовой пояс: Time zone: Europe/Moscow (GMT +3)
  • указываю тип языка: ru ru
  • указываю тему: Light

и нажимаю Continue → и вот сам Web-интерфейс управления домашней автоматизацией:

Web-интерфейс системы MajorDoMo на Ubuntu Trusty

Беглый просмотр возможностей показал, что все же есть ошибка на главной странице почему-то остановлен цикл main (все циклы располагаются в каталоге /var/www/scripts/cycle(*.php))

Сперва нужно проверить, а будут ли работать циклы, ручной режим:

$ sudo php /var/www/cycle.php

Connecting to database.

CONNECTED TO DB

Running startup maintenance

Clearing the cache.

Backing up files. OK

Checking table [admin_users] . OK

Checking table [app_quotes] . OK

Checking table [blockly_code] . OK

Checking table [cached_values] . OK

Checking table [calendar_categories] . OK

Checking table [calendar_events] . OK

Checking table [classes] . OK

Checking table [collections] . OK

Checking table [commands] . OK

Checking table [country] . OK

Checking table [elements] . OK

Checking table [elm_states] . OK

Checking table [events] . OK

Checking table [gpsactions] . OK

Checking table [gpsdevices] . OK

Checking table [gpslocations] . OK

Checking table [gpslog] . OK

Checking table [history] . OK

Checking table [ignore_updates] . OK

Checking table [jobs] . OK

Checking table [layouts] . OK

Checking table [locations] . OK

Checking table [log4php_log] . OK

Checking table [media_favorites] . OK

Checking table [media_history] . OK

Checking table [methods] . OK

Checking table [myblocks] . OK

Checking table [myblocks_categories] . OK

Checking table [newsletter] . OK

Checking table [objects] . OK

Checking table [patterns] . OK

Checking table [performance_log] . OK

Checking table [phistory] . OK

Checking table [pinghosts] . OK

Checking table [plugins] . OK

Checking table [prod_categories] . OK

Checking table [product_categories] . OK

Checking table [product_codes] . OK

Checking table [product_log] . OK

Checking table [products] . OK

Checking table [project_modules] . OK

Checking table [properties] . OK

Checking table [pvalues] . OK

Checking table [readit_channels] . OK

Checking table [readit_urls] . OK

Checking table [rss_channels] . OK

Checking table [rss_items] . OK

Checking table [safe_execs] . OK

Checking table [scenes] . OK

Checking table [script_categories] . OK

Checking table [scripts] . OK

Checking table [security_rules] . OK

Checking table [settings] . OK

Checking table [shoplist] . OK

Checking table [shopping_list_items] . OK

Checking table [shoutrooms] . OK

Checking table [shouts] . OK

Checking table [system_errors] . OK

Checking table [system_errors_data] . OK

Checking table [tdwiki] . OK

Checking table [terminals] . OK

Checking table [usbdevices] . OK

Checking table [userlog] . OK

Checking table [users] . OK

Checking table [webvars] . OK

PHP Fatal error: Call to undefined function curl_init() in /var/www/modules/objects/objects.class.php on line 426

Ага в моей системе чего-то хватает, опытным путем установил, что нужно в систему доустановить нижеследующие пакеты:

$ sudo apt-get install libcurl3 libcurl3-dev php5-curl -y

Проверяю еще раз (ручной режим запуска, прежде чем я настрою на автоматический запуск самой системой):

$ sudo php /var/www/cycle.php

на этот раз ошибок нет.

Теперь создаю скрипт посредством которого можно будет, как вручную запускать так и останавливать работу циклов приложения majordomo.conf:

$ sudo nano /etc/init/majordomo.conf

description "Ekzorchik and Majordomo"

start on runlevel [2345]

stop on runlevel [!2345]

echo "date_$(date '+%d_%m_%Y_%k_%M') : $UPSTART_JOB started" >> /var/www/debmes/$UPSTART_JOB.log

exec /usr/bin/php /var/www/cycle.php

echo "date_$(date '+%d_%m_%Y_%k_%M') : $UPSTART_JOB stoped" >> /var/www/debmes/$UPSTART_JOB.log

После этого можно запускать и останавливать главный цикл без перезагрузок ОС.

$ sudo start majordomo

$ sudo stop majordomo

Проверяем, что цикл работает: (также он запуститься сам после перезагрузки)

$ sudo start majordomo

majordomo start/running, process 7960

$ ps aux | grep php

date_15_01_2017_16_07 : majordomo started

date_15_01_2017_16_07 : majordomo stoped

date_15_01_2017_16_07 : majordomo started

@reboot /usr/bin/php /var/www/cycle.php

Поправлена работа с циклами в MajorDoMo

Для справки по циклам:

На данный момент имеются вот такие основные циклы (их количество может меняться в зависимости от конфигурации системы):

0

Выбирайте режим сети "хост", в противном случае не будут приходить пакеты mulicast.

1

При необходимости монтируем внешнюю папку:

2

Скрипт установки выкачивает из github последний образ системы. Если не указать путь /var/www/html, система автоматически установится внутри контейнера. Если вам нужен доступ к файлам мажордомо, то рекомендуется систему разворачивать снаружи контейнера.

3

Не забудьте прописать путь /var/www/html:

5

При необходимости вы можете их переназначить

8

Через готовый образ docker

Для начала устанавливаем docker на вашу систему в соотстветствии с инструкцией, например для ubuntu это можно сделать по этой инструкции

Создаем папку вне контейнера, где будут лежать файлы системы, к которым можно получить доступ и даем полные права на папку

Запускаем контейнер с указанием пути вашей папки docker run --init -d --name="majordomo" -v /path/to/yours/www:/var/www/html --net=host --restart=always nick7zmail/majordomo:latest ```

docker run --init -d --name="majordomo" -v /home/pi/majordomo:/var/www/html --net=host --restart=always nick7zmail/majordomo:latest

После запуска контейнера, можно увидеть его командой docker ps

Если вы создали лишний контейнер, удалить ненужный можно командой 'docker rm majordomo3'

Публичные порты контейнера можно посмотреть командой docker port majordomo.

При первом запуске контейнера происходит скачивание системы majordomo из официального репозитория, поэтому для запуска системы примерно через 5 минут необходимо перезагрузить контейнер.

'''
docker restart majodomo
'''

Более подробно с командами docker можно ознакомиться в оф. документации или в шпаргалке на хабр.

Запуск через docker-compose

Еще один вариант запуска контейнера через через docker-compose

Создаем файл docker-compose.yaml:

docker-compose up -d

Супервайзер

Позволяет управлять запуском основного цикла и php-fpm, доступен на порту 9001. Логин и пароль:"majordomo" :

7

Система MajorDoMo

доступна на порту 8888:

6

Дополнения

Доступ к файловой системе внутри контейнера можно получить через дополнение из маркета "KodExplorer"

9

Доступ к базе данных mysql также можно получить через дополнение "phpmyadmin".

Читайте также: