- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这是我想要实现的目标:打开一个 shell(korn 或 bash,没关系),从那个 shell,我想打开一个 ssh 连接(ssh user@host
)。在某些时候,可能会提示我输入密码,或者可能会询问我是否确定要连接(有问题的键)。
在有人问之前:是的,我知道有一个用于 ssh2 exec 调用的插件,但是我正在使用的服务器不支持它,而且不太可能这样做。
这是我到目前为止所尝试的:
$desc = array(array('pipe','r'),array('pipe','w'));//used in all example code
$p = proc_open('ssh user@host',$desc,$pipes);
if(!is_resource($p)){ die('@!#$%');}//will omit this line from now on
sleep(1);//omitting this,too but it's there every time I need it
stream_get_contents($pipes[1])
)以查看接下来我必须传递的内容(密码,是或返回
'connection failed: '.stream_get_contents($pipes[1])
和 proc_close $p.
Pseudo-terminal will not be allocated because stdin is not a terminal.
php://
中调用了 ssh io-stream 上下文,似乎是对上述错误的合理解释。
$p = proc_open('bash',$desc,$pipes);
$p=proc_open('bash && ssh user@host',$desc,$pipes);
PHP Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 133693440 bytes)
#!/path/to/bin/php -n
<?php
$p = proc_open('bash && ssh user@host',array(array('pipe','r'),array('pipe','w')),$ps);
if (!is_resource($p))
{
die('FFS');
}
usleep(10);
fwrite($ps[0],'yes'."\n");
fflush($ps[0]);
usleep(20);
fwrite($ps[0],'password'."\n");
fflush($ps[0]);
usleep(20);
fwrite($ps[0],'whoami'."\n");
fflush($ps[0]);
usleep(2);
$msg = stream_get_contents($ps[1]);
fwrite($ps[0],'exit'."\n");
fclose($ps[0]);
fclose($ps[1]);
proc_close($p);
?>
fflush
和冗余,但重点是:我知道这个连接会首先提示我有问题的 key ,然后询问密码。我的猜测是 $pipes[1] 中的流包含 ssh 连接,因此它的内容很大。那么我需要的是管道内的管道......这甚至可能吗?我一定是错过了什么,如果这是不可能的,那么管道有什么用......
最佳答案
Before anyone asks: yes, I am aware there is a plugin for ssh2 exec calls, but the servers I'm working on don't support it, and are unlikely to do so.
<?php
include('Net/SSH2.php');
$ssh = new Net_SSH2('www.domain.tld');
if (!$ssh->login('username', 'password')) {
exit('Login Failed');
}
echo $ssh->exec('pwd');
echo $ssh->exec('ls -la');
?>
关于ssh - proc_open 交互,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10102952/
这是我的代码 $descriptorspec = array( 0 => array("pipe", "r") ); $call_mp4 = "ffmpeg command ...... "; $op
我正在尝试将lighttpd编译为处理器arm的静态,以便可以在Android设备上运行。我正在用交叉编译器arm-musl-linuxeabi编译lighttpd,我在https://bitbuck
这是我想要实现的目标:打开一个 shell(korn 或 bash,没关系),从那个 shell,我想打开一个 ssh 连接(ssh user@host)。在某些时候,可能会提示我输入密码,或者可能会
我正在尝试使用 proc_open() 运行进程功能。正如页面上所指定的 - 我提供了自定义环境变量并尝试打印出来。它显示了我提供的所有变量+始终为 3 个变量:“SLVL”、“PWD”、“_=”。我
我想调用proc_open在后台执行一个脚本,后台进程会在几秒后终止。基本上,该脚本是一个 C/Java/Python 脚本,它将编译并运行用户提交的代码,因此我希望该进程能够在一段时间后终止。 我想
我有一个实用函数,用于通过 CLI(cmd、bash 等)执行程序。它返回一个包含 3 个项目的数组:STDOUT、STDERR 和 EXIT CODE。 到目前为止,它运行良好,没有出现问题。事实上
我正在编写可在 *nix 系统下运行的 php 代码。我需要在 php 代码中调用带有 5 个参数的 python 脚本。一些争论是用户输入,所以可能有任何字符。我不知道如何将参数传递给脚本。我将如何
以下脚本监视 /dev/shm/test 是否有新文件并实时输出有关它的信息。 问题是当用户关闭浏览器时,inotifywait 进程仍然打开,等等。 有什么办法可以避免这种情况吗? array("
我目前正在开发一个在线程序。我正在编写一个 php 脚本,它在命令行中使用 proc_open() (在 Linux Ubuntu 下)执行命令。到目前为止,这是我的代码: array("pipe"
我正在使用带有 pdftk 的 proc_open 来用数据预填充一些表格,这工作得很好,但我不想将结果保存到文件然后读回文件,而是直接打印文件.我有这个工作,所以我没有任何问题。但我想将 proc_
我有一个 PHP 脚本,我想从 PHP 脚本调用一个用 C 编写的进程。有很多方法可以做到这一点(系统,执行...),但是选择函数proc_open。有了这个,我可以使用 C 进程在 stdin 和
我正在尝试使用 proc_open(需要双向支持)调用 C++/Python 文件。 在做了一些在线研究后,我发现创建了这段代码:(我首先用 c++ 尝试,失败后我也尝试了 python) PHP:
我正在运行一个sh 脚本,它通过ubuntu服务器上的php运行java进程。我正在使用 proc_open 来运行该进程。通常工作流程如下: 请求页面 -> 脚本运行(直到完成)-> 结果页面。 在
我在 php 中使用 proc_open 来启动一个子进程并来回发送数据。 有时我想等待进程结束并检索退出代码。 问题是如果进程已经完成,我对proc_close 的调用返回-1。对于 proc_cl
我有 2 个 PHP 脚本,分别是 caller.php 和 task.php。 caller.php 使用 JQuery Ajax 请求调用,然后 caller.php 启动一个进程在后台运行 PH
我有一个 PHP 脚本,我在其中使用 proc_open() 创建了一个新进程。它执行了大约 2 小时,最后我有一个 proc_close()。 有时我需要在中间停止这个进程,我如何杀死/发出信号以停
当尝试使用 ffmpeg 将 wmv 文件(转换为 flv)转换为 flv 时,我在 Windows 上遇到了 proc_open 问题,但我怀疑我会遇到每当某些情况发生时,都会发生相同的情况。 基本
所以我用 $process = proc_open("my_process", $descriptors, $pipes); 打开一个进程 然后我使用 fwrite($pipes[0], "some_
在 PHP 中有一个方便的函数叫做 proc_open .它可用于调用可执行文件,将其 stdin、stdout 和 stderr 作为管道打开。 这个函数在 C++ 中有一个很好的跨平台版本吗?唯一
考虑这个示例脚本: STDIN, 1 => STDOUT, 2 => STDERR), $pipes); fgetc(STDIN); 当 /bin/sh 符号链接(symbolic link)到 /
我是一名优秀的程序员,十分优秀!