Использование системы в различных ситуациях, вопросы программирования сценариев.
Модератор: immortal
-
yden
- Сообщения: 141
- Зарегистрирован: Пн авг 22, 2016 10:03 am
-
Благодарил (а):
28 раз
-
Поблагодарили:
5 раз
Сообщение
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
-
Благодарил (а):
15 раз
-
Поблагодарили:
3 раза
Сообщение
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);
И перезагрузка соответственно без пароля:
- За это сообщение автора gans поблагодарили (всего 3):
- yden (Вс апр 21, 2019 2:53 pm) • ipc2002 (Ср апр 24, 2019 9:41 pm) • Amarok (Сб ноя 09, 2019 8:03 am)
-
Yojiq
- Сообщения: 18
- Зарегистрирован: Пт янв 17, 2020 10:44 am
- Откуда: Славянск
-
Благодарил (а):
4 раза
-
Поблагодарили:
0
Сообщение
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
- Откуда: Киров, Россия
-
Благодарил (а):
400 раз
-
Поблагодарили:
1753 раза
-
Контактная информация:
Сообщение
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
-
Благодарил (а):
34 раза
-
Поблагодарили:
6 раз
Сообщение
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
- Откуда: Киров, Россия
-
Благодарил (а):
400 раз
-
Поблагодарили:
1753 раза
-
Контактная информация:
Сообщение
skysilver » Пт мар 27, 2020 2:40 pm
iden писал(а): ↑Пт мар 27, 2020 2:34 pm
подскажи неучу, куда этот код девать для корректного выключения? Думал через сценарий, не работает
Хоть в сценарий, хоть в метод, хоть прямо в код кнопки, которая в Меню, на Сцене или в Телеграмме.
Отладить удобно в сценарии. Весь вопрос в том, что именно не работает. Бэкап не создается, таймер на выключение не запускается, или сервер в shutdown не уходит?
-
iden
- Сообщения: 84
- Зарегистрирован: Вт мар 13, 2018 1:51 pm
-
Благодарил (а):
34 раза
-
Поблагодарили:
6 раз
Сообщение
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
- Откуда: Славянск
-
Благодарил (а):
4 раза
-
Поблагодарили:
0
Сообщение
Yojiq » Пт мар 27, 2020 10:11 pm
skysilver писал(а): ↑Пт мар 27, 2020 10:35 am
Не нужно. DB_USER, DB_PASSWORD и DB_NAME - это переменные окружения MajorDoMo. Их значения сами подставятся при выполнении сценария.
спасибо за ответ
все работает, только время мне кажется больше чем 15 секунд проходит пока скрипт пройдет, возможно на выполнение много ресурсов у меня тратится (слабая машина)
-
Nail
- Сообщения: 376
- Зарегистрирован: Пн мар 05, 2018 7:09 am
- Откуда: Самара
-
Благодарил (а):
174 раза
-
Поблагодарили:
28 раз
Сообщение
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.