Страница 1 из 2

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

Добавлено: Вс июн 03, 2018 4:19 pm
Diesel
Доброго времени суток. В офисе есть свободное рабочее пространство с десятком систем на 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;
        }
    }
}

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

Добавлено: Вс июн 03, 2018 4:52 pm
Chainik
Может тут что-то полезное почерпнете (https://majordomo.smartliving.ru/forum/ ... f=4&t=1541).

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

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

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

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.

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

Добавлено: Вс июн 03, 2018 8:59 pm
Ron
Пользователям root, system2 разрешен вход по SSH?
Можете с этими аккаунтами подключиться в ручную?

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

Добавлено: Вс июн 03, 2018 9:19 pm
olehs
А сам php-скрипт -то что выводит при выполнении?

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

Добавлено: Вс июн 03, 2018 9:24 pm
Diesel
okay: logged in

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

Добавлено: Вс июн 03, 2018 9:36 pm
Diesel
Пользователям root, system2 разрешен вход по SSH?
Можете с этими аккаунтами подключиться в ручную?
По ссш заходит без проблем. Команда выполняется.

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

Добавлено: Вс июн 03, 2018 10:24 pm
Ron
В логах видно что послал нафиг по ssh2.
Давай скрипт (можно и нужно пароли затереть :) )

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

Добавлено: Вс июн 03, 2018 10:38 pm
olehs
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);
        }
    }
}

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

Добавлено: Пн июн 04, 2018 9:52 am
Diesel
Если оставлять команду с судо - на него ругается:

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

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

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

okay: logged in... This utility may only be run by the root user.