Использование системы в различных ситуациях, вопросы программирования сценариев.
Модератор: immortal
yden
Сообщения: 141 Зарегистрирован: Пн авг 22, 2016 10:03 am
Сообщение
yden » Сб апр 20, 2019 9:02 am
Здравствуйте.
Подскажите пожалуйста, затупил. Vlv стоит на ubuntu server 16.04. Редактирую с коннекта скрипт перезагрузки и выключения сервера.
Перезагрузка:
Код: Выделить всё
say('Подготовка к перезагрузке',200);
say('Сервер будет перезагружен через 30 секунд',200);
say('Сохранение базы данных',200);
$filename = '/var/www/backup/db.sql';
$mysqlDumpPath = "/usr/bin/mysqldump";
$mysqlDumpParam = "root" . DB_USER . "***" . DB_PASSWORD;
$mysqlDumpParam .= " --no-create-db --add-drop-table --databases " . DB_NAME;
if (file_exists($filename)) rename($filename, $filename . '.prev');
exec($mysqlDumpPath . $mysqlDumpParam . " > " . $filename);
setTimeout("shutdownTimer","safe_exec('sudo shutdown -r now');",30); //перезагрузка через 30 сек.
Не въехал, что переделать для выключения сервера и как дать права выполнить запуск скрипта без ввода пароля.
Благодарю
gans
Сообщения: 37 Зарегистрирован: Вс янв 06, 2013 2:57 pm
Сообщение
gans » Вс апр 21, 2019 9:01 am
Можно вот так выключить, без sudo:
Код: Выделить всё
$filename = ROOT . '/database_backup/db.sql';
$mysqlDumpPath = "/usr/bin/mysqldump";
$mysqlDumpParam = " --user=" . DB_USER . " --password=" . DB_PASSWORD;
$mysqlDumpParam .= " --no-create-db --add-drop-table --databases " . DB_NAME;
if (file_exists($filename)) rename($filename, $filename . '.prev');
exec($mysqlDumpPath . $mysqlDumpParam . " > " . $filename);
say("Подготовка к выключению",2);
setTimeout("shutdownTimer","safe_exec('systemctl poweroff');",15);
И перезагрузка соответственно без пароля:
Yojiq
Сообщения: 18 Зарегистрирован: Пт янв 17, 2020 10:44 am
Откуда: Славянск
Сообщение
Yojiq » Пт мар 27, 2020 6:39 am
gans писал(а): Вс апр 21, 2019 9:01 am
Можно вот так выключить, без sudo:
Код: Выделить всё
$filename = ROOT . '/database_backup/db.sql';
$mysqlDumpPath = "/usr/bin/mysqldump";
$mysqlDumpParam = " --user=" . DB_USER . " --password=" . DB_PASSWORD;
$mysqlDumpParam .= " --no-create-db --add-drop-table --databases " . DB_NAME;
if (file_exists($filename)) rename($filename, $filename . '.prev');
exec($mysqlDumpPath . $mysqlDumpParam . " > " . $filename);
say("Подготовка к выключению",2);
setTimeout("shutdownTimer","safe_exec('systemctl poweroff');",15);
user и password от php вводить ?
DB_NAME - где подсмотреть ?
skysilver
Сообщения: 3006 Зарегистрирован: Чт авг 21, 2014 8:28 am
Откуда: Киров, Россия
Контактная информация:
Сообщение
skysilver » Пт мар 27, 2020 10:35 am
Yojiq писал(а): Пт мар 27, 2020 6:39 am
user и password от php вводить ?
DB_NAME - где подсмотреть ?
Не нужно. DB_USER, DB_PASSWORD и DB_NAME - это переменные окружения MajorDoMo. Их значения сами подставятся при выполнении сценария.
iden
Сообщения: 84 Зарегистрирован: Вт мар 13, 2018 1:51 pm
Сообщение
iden » Пт мар 27, 2020 2:34 pm
skysilver писал(а): Пт мар 27, 2020 10:35 am
Yojiq писал(а): Пт мар 27, 2020 6:39 am
user и password от php вводить ?
DB_NAME - где подсмотреть ?
Не нужно. DB_USER, DB_PASSWORD и DB_NAME - это переменные окружения MajorDoMo. Их значения сами подставятся при выполнении сценария.
подскажи неучу, куда этот код девать для корректного выключения? Думал через сценарий, не работает
Код: Выделить всё
$filename = ROOT . '/database_backup/db.sql';
$mysqlDumpPath = "/usr/bin/mysqldump";
$mysqlDumpParam = " --user=" . DB_USER . " --password=" . DB_PASSWORD;
$mysqlDumpParam .= " --no-create-db --add-drop-table --databases " . DB_NAME;
if (file_exists($filename)) rename($filename, $filename . '.prev');
exec($mysqlDumpPath . $mysqlDumpParam . " > " . $filename);
say("Подготовка к выключению",2);
setTimeout("shutdownTimer","safe_exec('systemctl poweroff');",15);
skysilver
Сообщения: 3006 Зарегистрирован: Чт авг 21, 2014 8:28 am
Откуда: Киров, Россия
Контактная информация:
Сообщение
skysilver » Пт мар 27, 2020 2:40 pm
iden писал(а): Пт мар 27, 2020 2:34 pm
подскажи неучу, куда этот код девать для корректного выключения? Думал через сценарий, не работает
Хоть в сценарий, хоть в метод, хоть прямо в код кнопки, которая в Меню, на Сцене или в Телеграмме.
Отладить удобно в сценарии. Весь вопрос в том, что именно не работает. Бэкап не создается, таймер на выключение не запускается, или сервер в shutdown не уходит?
iden
Сообщения: 84 Зарегистрирован: Вт мар 13, 2018 1:51 pm
Сообщение
iden » Пт мар 27, 2020 2:44 pm
skysilver писал(а): Пт мар 27, 2020 2:40 pm
iden писал(а): Пт мар 27, 2020 2:34 pm
подскажи неучу, куда этот код девать для корректного выключения? Думал через сценарий, не работает
Хоть в сценарий, хоть в метод, хоть прямо в код кнопки, которая в Меню, на Сцене или в Телеграмме.
Отладить удобно в сценарии. Весь вопрос в том, что именно не работает. Бэкап не создается, таймер на выключение не запускается, или сервер в shutdown не уходит?
вообще ничего не работает, в тегу напишу)
рад что ты вернулся!
Yojiq
Сообщения: 18 Зарегистрирован: Пт янв 17, 2020 10:44 am
Откуда: Славянск
Сообщение
Yojiq » Пт мар 27, 2020 10:11 pm
skysilver писал(а): Пт мар 27, 2020 10:35 am
Не нужно. DB_USER, DB_PASSWORD и DB_NAME - это переменные окружения MajorDoMo. Их значения сами подставятся при выполнении сценария.
спасибо за ответ
все работает, только время мне кажется больше чем 15 секунд проходит пока скрипт пройдет, возможно на выполнение много ресурсов у меня тратится (слабая машина)
Nail
Сообщения: 377 Зарегистрирован: Пн мар 05, 2018 7:09 am
Откуда: Самара
Сообщение
Nail » Пт мар 27, 2020 11:18 pm
gans писал(а): Вс апр 21, 2019 9:01 am
Можно вот так выключить, без sudo:
Код: Выделить всё
$filename = ROOT . '/database_backup/db.sql';
$mysqlDumpPath = "/usr/bin/mysqldump";
$mysqlDumpParam = " --user=" . DB_USER . " --password=" . DB_PASSWORD;
$mysqlDumpParam .= " --no-create-db --add-drop-table --databases " . DB_NAME;
if (file_exists($filename)) rename($filename, $filename . '.prev');
exec($mysqlDumpPath . $mysqlDumpParam . " > " . $filename);
say("Подготовка к выключению",2);
setTimeout("shutdownTimer","safe_exec ('systemctl reboot');",15);
А на Ubuntu Desktop 18.04.4 (64-bit) перезагрузка подойдёт ?
Mini AMD A6 1450 Quad-core.Ubuntu Server 18.04 (64-bit). MegaD. Zigbee2mqtt+SLS DIN Mini. Broadlink.