Автор Тема: Debian - дистанционный шатдаун  (Прочитано 327 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн 6wings

  • Постоялец
  • ***
  • Сообщений: 213
  • Рейтинг: 1
  • Пол: Мужской
  • Шестикрыл
    • SixWingsBro
    • Просмотр профиля
  • Откуда: Москва (Ясенево)
Debian - дистанционный шатдаун
« : 11 Апреля 2018, 12:29:04 »
Имеется вирт. машина под Дебиан 8 с Самбой в качестве Standalone server.
Выполняет роль Мастер браузера, видна в локальной сети и даёт доступ к своим папкам /root и /user другим компам, которые знают пароль рута.
Однако, не удается выполнить ей дистанционный шатдаун с других компов (знающих пароль рута). На команду
>shutdown /s /m \\Theia /t 0 /d p:0:0
получаю ответ
Theia: Access is denied.(5)

Помнится, что такой проблемы у меня не было с Дебиан 7, но его конфигурация утеряна и посмотреть/сравнить нельзя.

Вопрос - что бы такое там подкрутить?
Let's Funk!

Оффлайн FessAectan

  • Модератор
  • Старожил
  • *****
  • Сообщений: 946
  • Рейтинг: 24
  • Пол: Мужской
  • На пути к просветлению
    • fessae@jabber.ru
    • fessae
    • Просмотр профиля
    • https://vistep.ru/
  • Откуда: vistep.ru
Debian - дистанционный шатдаун
« Ответ #1 : 12 Апреля 2018, 09:26:40 »
Порой людям странного хочется...
Чего чинить в вашем случае не знаю, но как вариант:
1. Скрипт, который вызывает клиент (например, https://client.vistep.ru/reboot.php)

<?php
$fh = fopen("/var/www/html/rrrreeeebbbbboooootttttt/reboot.server",'w');
fwrite($fh,"Reboot now\n");
fclose($fh);
header("Location: /uptime.php");
exit();
2. uptime.php

<?php
$str   = @file_get_contents('/proc/uptime');
$num   = floatval($str);
$secs  = fmod($num, 60); $num = (int)($num / 60);
$mins  = $num % 60;      $num = (int)($num / 60);
$hours = $num % 24;      $num = (int)($num / 24);
$days  = $num;
echo "Этот сервер включен уже " .$days . " дней, " . $hours . " часов, и " . $mins . " минут ".PHP_EOL;
if (file_exists('/var/www/html/rrrreeeebbbbboooootttttt/reboot.server')) echo "и будет перезагружен в течение 1 минуты".PHP_EOL;

3. bash-скрипт, который проверяет наличие флага /var/www/html/rrrreeeebbbbboooootttttt/reboot.server

#!/bin/bash
if [ -f /var/www/html/rrrreeeebbbbboooootttttt/reboot.server ]; then
  rm -f /var/www/html/rrrreeeebbbbboooootttttt/reboot.server
  /sbin/shutdown -r now
fi

4. Скрон-задача

* * * * * /root/sh/checkreboot.sh
[/quote]
Мы переоцениваем себя завтрашнего, поэтому и страдаем прокрастинацией.

Оффлайн 6wings

  • Постоялец
  • ***
  • Сообщений: 213
  • Рейтинг: 1
  • Пол: Мужской
  • Шестикрыл
    • SixWingsBro
    • Просмотр профиля
  • Откуда: Москва (Ясенево)
Debian - дистанционный шатдаун
« Ответ #2 : 12 Апреля 2018, 10:05:58 »
Порой людям странного хочется...
ничего странного:
прежде, чем перезагружать хост, на котором работают ВМ, хорошо бы корректно погасить все ВМ.
Сама VMware, на которой работают эти ВМ, при простом ребуте хоста почему-то не всегда успевает погасить все ВМ корректно. Поэтому перед ребутом хоста приходится запускать скрипт, гасящий все ВМ.

Это простой скрипт, работающий под Windows и состоящий из кучки команд shutdown, который нормально шатдаунит все ВМ под Windows, но линуксовые машины приходится гасить вручную из VMware. Это не смертельно, но не очень удобно. Хочется и линуксовые ВМ гасить этим же скриптом.

И что интересно - если делать шатдауны из VMware даже не логинясь на линуксовые ВМ, то эти шатдауны нормально отрабатывают. Значит, сама VMware умеет  делать им штатные шатдауны. Вот и хочется использовать что-то похожее в скрипте. Причём, когда-то у меня была ВМ под Дебиан, которая нормально гасилась обычной виндовой командой shutdown, выдаваемой дистанционно по сети, но посмотреть её конфиг я не могу т.к. этой ВМ давно нет.

Гасить эти машины при помощи PHP и подобных ухищрений не представляется возможным, т.к. не на всех них есть PHP.

Как-то так ))
« Последнее редактирование: 12 Апреля 2018, 10:17:48 от 6wings »
Let's Funk!

Оффлайн Retif

  • Администраторы
  • Олдфаг
  • *****
  • Сообщений: 8185
  • Рейтинг: 81
  • Пол: Мужской
  • Афтар
    • Просмотр профиля
    • Мой блог
  • Откуда: Орёл-Москва
Debian - дистанционный шатдаун
« Ответ #3 : 12 Апреля 2018, 10:32:55 »
Сама VMware, на которой работают эти ВМ, при простом ребуте хоста почему-то не всегда успевает погасить все ВМ корректно. Поэтому перед ребутом хоста приходится запускать скрипт, гасящий все ВМ.

Это простой скрипт, работающий под Windows и состоящий из кучки команд shutdown, который нормально шатдаунит все ВМ под Windows, но линуксовые машины приходится гасить вручную из VMware. Это не смертельно, но не очень удобно. Хочется и линуксовые ВМ гасить этим же скриптом.
А PowerCLI почему нельзя использовать? Корректно выключать виртуалки, как виртуалки, из Powershell.

Оффлайн 6wings

  • Постоялец
  • ***
  • Сообщений: 213
  • Рейтинг: 1
  • Пол: Мужской
  • Шестикрыл
    • SixWingsBro
    • Просмотр профиля
  • Откуда: Москва (Ясенево)
Debian - дистанционный шатдаун
« Ответ #4 : 12 Апреля 2018, 10:42:15 »
А PowerCLI почему нельзя использовать?
Вроде, попроще способ нашёлся (я поленился погуглить сначала) - при помощи putty.exe по ssh передавать команду shutdown, логинясь с правами рута. Щас попробую.


Updated: 12 April 2018, 10:43:35

Меня сбивало с толку то, что когда-то раньше у меня и обычный виндовый shutdown отрабатывал.
Let's Funk!

Оффлайн Retif

  • Администраторы
  • Олдфаг
  • *****
  • Сообщений: 8185
  • Рейтинг: 81
  • Пол: Мужской
  • Афтар
    • Просмотр профиля
    • Мой блог
  • Откуда: Орёл-Москва
Debian - дистанционный шатдаун
« Ответ #5 : 12 Апреля 2018, 10:55:57 »
Вроде, попроще способ нашёлся
Ды вроде, что там сложного-то, в PowerCLI? Ну и имхо, так правильней, в условиях поставленного ТЗ (с виндовой машины корректно выключать виртуалки под виндой и под линухом).

Оффлайн 6wings

  • Постоялец
  • ***
  • Сообщений: 213
  • Рейтинг: 1
  • Пол: Мужской
  • Шестикрыл
    • SixWingsBro
    • Просмотр профиля
  • Откуда: Москва (Ясенево)
Debian - дистанционный шатдаун
« Ответ #6 : 12 Апреля 2018, 11:09:56 »
Насчёт PowerCli совет правильный, спасибо. Я как-то про него забыл, хотя пользовался.
Но через ssh универсальнее т.к. оно не привязано к гипервизору VMware.
В общем, есть способы. Спасибо ))


Updated: 12 April 2018, 19:48:36

Короче, остановился я на ssh через putty. Выглядит эта строчка в скрипте так:
C:\Programs\Putty\putty.exe -m shutdown.txt -ssh -P 22 -l root -pw <passwd> THEIA

Файл shutdown.txt содержит всего 2 строки:
shutdown -h +1
exit

Единственное малосущественное "но" заключается в том, что в команде shutdown приходится давать задержку в 1 минуту (+1) т.к. если написать now, то коннект рвётся сразу же и бедная putty ругается. Задержку меньше 1 минуты в команде shutdown дать невозможно, хотя, там и 5 сек хватило бы чтобы выйти из шелл по exit и рассоединиться естественным образом.
« Последнее редактирование: 12 Апреля 2018, 19:56:02 от 6wings »
Let's Funk!