SSH2 и PHP не работают "Терминал"

Всякий раз, когда я пытаюсь выполнить

if (!($stream = ssh2_exec($con, "cd $dir; screen -S creative java -Xmx500M -Xms500M -jar spigot.jar" ))) {

он продолжает возвращаться с "Должен быть подключен к терминалу". который я не могу обойти. Как мне обойти / исправить это?

3 ответа

Решение

Проверьте это: вы должны передать имя эмуляции pty ("vt102", "ansi" и т. Д.), Если вы хотите эмулировать pty, или NULL, если вы этого не делаете.

Передача false преобразует false в строку и выделяет "" терминал.

ср http://php.net/manual/fr/function.ssh2-exec.php

Вы можете попробовать использовать функции read() / write() в phpseclib. например.

<?php
include('Net/SSH2.php');

$ssh = new Net_SSH2('www.domain.tld');
if (!$ssh->login('username', 'password')) {
    exit('Login Failed');
}

echo $ssh->read('username@username:~$');
$ssh->write("ls -la\n"); // note the "\n"
echo $ssh->read('username@username:~$');

Стартовый экран, как и вы, требует действительного TTY, потому что он привязан к вашему сеансу. Реализация ssh в PHP просто не создает такой сеанс.

Стартовый экран отсоединен должен сделать трюк:

screen -d -m [<command>]

Итак, ваш код будет выглядеть так:

if (!($stream = ssh2_exec($con, "cd $dir; screen -d -m -S creative java -Xmx500M -Xms500M -jar spigot.jar" ))) {
Другие вопросы по тегам