Удаленное выключение linux-сервера PHP

в 23:17, , рубрики: linux, php, ssh, метки: , ,

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

Выключать компьютер мы будем через ssh в php-скрипте (тогда нам не надо даже писать приложения для android и ios, а просто создать ссылку на скрипт). Для этого нам необходимо поставить библиотеку ssh для php. Достаточно подробно эта процедура описана здесь.

Далее необходимо написать скрипт, который будет выключать компьютер switcher.php:

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

if(!($con = ssh2_connect("localhost", 22))){
    echo  "fail: unable to establish connectionn";
} else {
    // авторизуемся по имени пользователя и паролю
    if(!ssh2_auth_password($con, "root", $_GET["password"])) {
        echo  "fail: unable to authenticaten";
    } else {
        // allright, we're in!
        echo  "okay: logged in...n";
 
        // выполняем комманду
        if (!($stream = ssh2_exec($con, "poweroff" ))) {
            echo  "fail: unable to execute commandn";
        } else {
            // collect returning data from command
            stream_set_blocking ($stream, true);
            $data = "";
            while ($buf = fread ($stream,4096)) {
                $data .= $buf;
            }
            fclose ($stream);
                echo $data;
        }
    }
}
?>

в итоге для выключения сервера используется url типа: 127.0.0.1/switcher.php?password=my_pass

Вот и все, теперь на любые устройства можно добавить ярлыки на рабочий стол на любое устройство и всё ок, компромат в безопасности =)

Буду рад другим способам, были варианты ssh соединения напрямую с разных платформ, но так увеличивается время разработки, хоть и безопаснее

Автор: shedy

Поделиться

* - обязательные к заполнению поля