Что я хочу сделать
Я хочу создать ssh-соединение с сервером teampeak.С этим необработанным соединением должна быть возможность вводить и получать команды из консоли.
Что я имею
$socket = @ssh2_connect($this->runtime['host'], $this->runtime['queryport']);
if($socket === false)
{
$this->addDebugLog('Error: connection failed!');
return $this->generateOutput(false, array('Error: connection failed!'), false);
}
else
{
if(@ssh2_auth_password($socket, $this->escapeText($username), $this->escapeText($password)))
{
if(($shell = @ssh2_shell($socket, "raw")) === false)
{
return $this->generateOutput(false, array('Error: failed to open a secure shell on server!'), false);
}
else
{
$this->runtime['ssh'] = $socket;
$this->runtime['socket'] = $shell;
@stream_set_timeout($this->runtime['socket'], $this->runtime['timeout']);
@stream_set_blocking($this->runtime['socket'], true);
return $this->generateOutput(true, array(), true);
}
}
else
{
return $this->generateOutput(false, array('Error: invalid loginname or password!'), false);
}
}
Что не так
Причина @stream_set_blocking($this->runtime['socket'], true);
в этой строке мой скрипт работает в тайм-аут.Также у меня есть проблема, что fgets всегда возвращает пустой результат.Я сделал что-то не так?