[英]Display more than 17 lines using phpseclib Interactive shell
[英]Using phpseclib with a custom shell wrapper
我正在使用PHPSeclib访问安装了dokku-alt的服务器:
http://dokku-alt.github.io/how-it-works.html
通过遵循一个典型示例,我设法将命令发送到我帐户上的自定义外壳程序:
$ssh=$this->connect();
echo trim($ssh->exec("version");
这相当于
ssh dokku@my.node.org version
并按预期工作。 但是,如果我尝试执行一个期望我通过STDIN发送数据的命令,则会出现问题。 据Net_SSH2文件,我需要write
数据到SSH流,而不是使用EXEC()。 不幸的是,我的下一个示例不起作用,因为自定义外壳程序不接收任何参数,并以帮助页面作为响应:
$ssh=$this->connect();
$ssh->write("mysql mariadb:console myapp newdb\n");
$ssh->write("show tables\n");
$ssh->read('[prompt]');
其结果与
ssh dokku@my.node.org
它只是以帮助页面作为响应。
如何结合“ exec”功能并且仍然能够写入数据? 这样的事情也不起作用:
$ssh=$this->connect();
$ssh->exec("mysql mariadb:console myapp newdb");
$ssh->write("show tables\n");
$ssh->read('[prompt]');
谢谢。
我认为您正在寻找PTY模式? 例如。
$ssh->enablePTY();
$ssh->exec('mysql mariadb:console myapp newdb');
echo $ssh->read('mysql>');
$ssh->write("show tables\n");
echo $ssh->read('mysql>');
更多信息:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.