Как проверить соединение в машиной в локальной сети php?

Добрый день! Есть у меня функция которая выполняет подключение к удаленной машине в локальной сети через ssh и выполняет нужную мне команду. И она работает. Но вот если машина не доступна(выключена или еще что то) , приложение выпадает в ошибку.
Вот функция
public function actionCommand($host,$username,$password){
        $console = "usbsrv -list";
        $yii_ssh = new Yii2ssh();
        $auth['username'] = $username; // логин
        $auth['password'] = $password; // пароль
        $session = $yii_ssh->connect($host, $auth); // подключаемся


        if($session){
            $lin = $yii_ssh->run_ssh($console);
            $line = explode("\n", $lin);
        }
        else{
            $line = false;
//            $line = 'Сервер не доступен, попробуйте позже';
        }
        return $line;
    }


А вот ошибка:
PHP Warning – yii\base\ErrorException
fclose() expects parameter 1 to be resource, boolean given
↵
Caused by: yii\base\ErrorException

in C:\OSPanel\domains\localhost\rutoken.loc\vendor\phpseclib\phpseclib\phpseclib\Net\SSH2.php at line 1152

5d80c407d6386002630022.png

Приложение написано на yii2, в нем использую библиотеку behnampro\yii2ssh\Yii2ssh. Она позволяет выполнять команды через ssh на удаленных машинах. Как проверить соединение с машиной в локальной сети средством php или Yii2? Я гуглил, но решения которые находил мне не подошли
  • Вопрос задан
  • 121 просмотр
Решения вопроса 2
Adamos
@Adamos
Библиотека написана криво, не проверяет успешность подключения.
Вряд ли вы хотите ее переписывать.
Можно завернуть этот блок в try-catch, отлавливать это самое исключение и обрабатывать его более корректно.
Ответ написан
Комментировать
irishmann
@irishmann
Научись пользоваться дебаггером
Оберни в
try{
// Что-то делаем
} catch ($ex){
//Этот блок выполняется если в предыдущем выпала ошибка или исключение
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы