Здравствуйте. Есть скрипт на PHP ,который выполняет команду screen -S test337 через SSH ,вот он:
/* Соединение */
$connect = ssh2_connect($rows1['ip'], $rows1['sshport']);
ssh2_auth_password($connect, $rows1['login'], base64_decode($rows1['password']));
$shell = ssh2_shell($connect);
/* Выполнение команды */
fwrite($shell, 'screen -S test337'.PHP_EOL);
/* Получение ответа */
$text = '';
while($buf = fread($shell,4096)) {$text .= $buf;};
echo '
'.$text;
/* Закрытие соединения */
fclose($shell);
В переменой $rows1 хранятся данные от SSH.
Но сервер выдаёт ошибку:
Cannot find terminfo entry for 'vanilla'
Если даже отправить просто команду screen ,он вернёт точно такую же ошибку.
На сервере стоит CentOS 6.*
Подскажите пожалуйста как это можно исправить?
И из-за чего это вообще может происходить?
Ответ
исправить ошибку можно, установив переменной окружения TERM какое-нибудь более распространённое (а значит, с большей вероятностью присутствующее в целевой системе) значение. например, xterm, или даже vt100
дополните вызов программы screen таким присвоением значения переменной TERM:
TERM=xterm screen ...
или таким:
TERM=vt100 screen ...
Комментариев нет:
Отправить комментарий