我使用PHPSeclib访问安装了dokku-alt的服务器:
http://dokku-alt.github.io/how-it-works.html
通过遵循一个典型的示例,我设法将命令发送到我帐户上的自定义shell:
$ssh=$this->connect();
echo trim($ssh->exec("version");这相当于
ssh dokku@my.node.org version并按预期工作。但是,如果我试图执行一个命令,希望我通过STDIN发送数据,就会出现问题。根据Net_SSH2文档,我需要将数据write到SSH流中,而不是使用exec()。不幸的是,我的下一个示例不起作用,因为自定义shell不接收任何参数并使用帮助页进行响应:
$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]');谢谢。
发布于 2014-09-21 16:14:31
我觉得你要找的就是PTY模式?例如:
$ssh->enablePTY();
$ssh->exec('mysql mariadb:console myapp newdb');
echo $ssh->read('mysql>');
$ssh->write("show tables\n");
echo $ssh->read('mysql>');更多信息:
http://phpseclib.sourceforge.net/ssh/pty.html
https://stackoverflow.com/questions/25948835
复制相似问题