Отправляем в "сон" компьютеры на ubuntu автоматически

Использование системы в различных ситуациях, вопросы программирования сценариев.

Модератор: immortal

Diesel
Сообщения: 31
Зарегистрирован: Вс май 20, 2018 7:45 pm
Благодарил (а): 5 раз
Поблагодарили: 2 раза

Отправляем в "сон" компьютеры на ubuntu автоматически

Сообщение Diesel » Вс июн 03, 2018 4:19 pm

Доброго времени суток. В офисе есть свободное рабочее пространство с десятком систем на Linux Mint (считай Ubuntu). Так как само понятие "свободное рабочее пространство" подразумевает, что каждый может занимать любую систему - как вытекающее последствие нет "крайних" в вопросе "кто не выключил систему?".
Появилась идея реализовать автоматическое "усыпление" компов при отсутствии людей в кабинете. Через ssh все получается очень просто: логинюсь на удаленной машине, ввожу

Код: Выделить всё

sudo pm-suspend
и комп засыпает.
С пхп ссш вроде бы тоже все просто, но система даже "не зевает", не то, чтобы уснуть. Может что-то я делаю не так? Кто то реализовывал что то подобное?

Код: Выделить всё

if (!function_exists ("ssh2_connect")) die ("function ssh2_connect doesn't exist");

if(!($con = ssh2_connect("адрес компа", 22))){
    echo  "fail: unable to establish connection\n";
} else {
    // авторизуемся по имени пользователя и паролю
    if(!ssh2_auth_password($con, "логин", "пароль")) {
        echo  "fail: unable to authenticate\n";
    } else {
        // allright, we're in!
        echo  "okay: logged in...\n";
 
        // выполняем комманду
        if (!($stream = ssh2_exec($con, "sudo pm-suspend" ))) {
            echo  "fail: unable to execute command\n";
        } else {
            // collect returning data from command
            stream_set_blocking ($stream, true);
            $data = "";
            while ($buf = fread ($stream,4096)) {
                $data .= $buf;
            }
            fclose ($stream);
                echo $data;
        }
    }
}
Chainik
Сообщения: 1462
Зарегистрирован: Вс янв 10, 2016 11:05 am
Благодарил (а): 260 раз
Поблагодарили: 454 раза

Re: Отправляем в "сон" компьютеры на ubuntu автоматически

Сообщение Chainik » Вс июн 03, 2018 4:52 pm

Может тут что-то полезное почерпнете (https://majordomo.smartliving.ru/forum/ ... f=4&t=1541).
Diesel
Сообщения: 31
Зарегистрирован: Вс май 20, 2018 7:45 pm
Благодарил (а): 5 раз
Поблагодарили: 2 раза

Re: Отправляем в "сон" компьютеры на ubuntu автоматически

Сообщение Diesel » Вс июн 03, 2018 4:59 pm

Код очень похож на тот, который я использую (скорее всего он и есть), попробовал тот, который заработал у человека - но результат тот же. В логах вот что:

Код: Выделить всё

Jun  3 16:54:24 system2-A68I-350-DELUXE-R2-0 sudo: pam_unix(sudo:session): session closed for user root
Jun  3 16:54:35 system2-A68I-350-DELUXE-R2-0 sshd[10928]: Accepted password for system2 from 192.168.1.100 port 43434 ssh2
Jun  3 16:54:35 system2-A68I-350-DELUXE-R2-0 sshd[10928]: pam_unix(sshd:session): session opened for user system2 by (uid=0)
Jun  3 16:54:35 system2-A68I-350-DELUXE-R2-0 systemd-logind[769]: New session 52 of user system2.
Jun  3 16:54:35 system2-A68I-350-DELUXE-R2-0 sshd[10941]: Received disconnect from 192.168.1.100 port 43434:11: PECL/ssh2 (http://pecl.php.net/packages/ssh2)
Jun  3 16:54:35 system2-A68I-350-DELUXE-R2-0 sshd[10941]: Disconnected from 192.168.1.100 port 43434
Jun  3 16:54:35 system2-A68I-350-DELUXE-R2-0 sshd[10928]: pam_unix(sshd:session): session closed for user system2
Jun  3 16:54:35 system2-A68I-350-DELUXE-R2-0 systemd-logind[769]: Removed session 52.
Аватара пользователя
Ron
Сообщения: 480
Зарегистрирован: Пт окт 27, 2017 6:44 pm
Благодарил (а): 144 раза
Поблагодарили: 70 раз

Re: Отправляем в "сон" компьютеры на ubuntu автоматически

Сообщение Ron » Вс июн 03, 2018 8:59 pm

Пользователям root, system2 разрешен вход по SSH?
Можете с этими аккаунтами подключиться в ручную?
olehs
Сообщения: 1115
Зарегистрирован: Вс июн 14, 2015 11:08 am
Благодарил (а): 85 раз
Поблагодарили: 342 раза

Re: Отправляем в "сон" компьютеры на ubuntu автоматически

Сообщение olehs » Вс июн 03, 2018 9:19 pm

А сам php-скрипт -то что выводит при выполнении?
Diesel
Сообщения: 31
Зарегистрирован: Вс май 20, 2018 7:45 pm
Благодарил (а): 5 раз
Поблагодарили: 2 раза

Re: Отправляем в "сон" компьютеры на ubuntu автоматически

Сообщение Diesel » Вс июн 03, 2018 9:24 pm

okay: logged in
Diesel
Сообщения: 31
Зарегистрирован: Вс май 20, 2018 7:45 pm
Благодарил (а): 5 раз
Поблагодарили: 2 раза

Re: Отправляем в "сон" компьютеры на ubuntu автоматически

Сообщение Diesel » Вс июн 03, 2018 9:36 pm

Пользователям root, system2 разрешен вход по SSH?
Можете с этими аккаунтами подключиться в ручную?
По ссш заходит без проблем. Команда выполняется.
Аватара пользователя
Ron
Сообщения: 480
Зарегистрирован: Пт окт 27, 2017 6:44 pm
Благодарил (а): 144 раза
Поблагодарили: 70 раз

Re: Отправляем в "сон" компьютеры на ubuntu автоматически

Сообщение Ron » Вс июн 03, 2018 10:24 pm

В логах видно что послал нафиг по ssh2.
Давай скрипт (можно и нужно пароли затереть :) )
olehs
Сообщения: 1115
Зарегистрирован: Вс июн 14, 2015 11:08 am
Благодарил (а): 85 раз
Поблагодарили: 342 раза

Re: Отправляем в "сон" компьютеры на ubuntu автоматически

Сообщение olehs » Вс июн 03, 2018 10:38 pm

Diesel писал(а):
Вс июн 03, 2018 9:24 pm
okay: logged in
Добавьте еще вывод STDERR и посмотрите что выдаст скрипт

Код: Выделить всё

if (!function_exists ("ssh2_connect")) die ("function ssh2_connect doesn't exist");

if(!($con = ssh2_connect("адрес компа", 22))){
    echo  "fail: unable to establish connection\n";
} else {
    // авторизуемся по имени пользователя и паролю
    if(!ssh2_auth_password($con, "логин", "пароль")) {
        echo  "fail: unable to authenticate\n";
    } else {
        // allright, we're in!
        echo  "okay: logged in...\n";
 
        // выполняем комманду
        if (!($stream = ssh2_exec($con, "sudo pm-suspend" ))) {
            echo  "fail: unable to execute command\n";
        } else {
            $err_stream = ssh2_fetch_stream($stream, SSH2_STREAM_STDERR);
            stream_set_blocking ($stream, true);
            stream_set_blocking ($err_stream, true);
            echo stream_get_contents($err_stream);
            echo "\n";
            echo stream_get_contents($stream);
            fclose ($err_stream);
            fclose ($stream);
        }
    }
}
Diesel
Сообщения: 31
Зарегистрирован: Вс май 20, 2018 7:45 pm
Благодарил (а): 5 раз
Поблагодарили: 2 раза

Re: Отправляем в "сон" компьютеры на ubuntu автоматически

Сообщение Diesel » Пн июн 04, 2018 9:52 am

Если оставлять команду с судо - на него ругается:

Код: Выделить всё

okay: logged in... sudo: нет tty и не указана программа askpass
, если судо убрать - соответственно ругается на его отсутствие:

Код: Выделить всё

okay: logged in... This utility may only be run by the root user.
Ответить