SSH   发布时间:2019-10-27  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了在PHP中运行Linux命令并启动SSH服务的例子大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

升级 VPS 后,由于 Ubuntu 的 upstart 与 OpenVZ 的兼容问题,导致 sshd 服务不自动启动了,在尝试了 vePortal 的 console 与 file manager 及提交技术支持后都不能解决问题之后。

只能靠自己了,大概的思路是在 php 中进行 su 命令以执行 sshd 服务,因为 WordPress 还活着,并且可以在后台直接编辑主题相关的 php 脚本。只要把准备好的代码片断插入到 header.php 中,并在浏览器中访问一下主页即可。

相关的代码逻辑
1. 使用 php 的 proc_open 打开一个进程,重定向 stdin,stdout,stderr,这里会执行一个 python 程序。
2. 在这个 python 程序中打开一个 pty,并运行一个 sh。
3. 利用步骤 1 中重定向的 stdin pipe 向 python 程序发送 su 命令,python 会将来自 stdin 的命令数据写到入 ptmx,而这时 sh 的 stdin,stdout 及 stderr 是重定向到与 python 打开的 ptmx 配对的 pts 上的。也就是说 su 命令最终会转给 sh 进程处理。
4. sh 进程自然的执行了 su 命令,这时 su 进程的 stdin,stderr 也会被重定向到那个 pts 上。
5. 在 sleep 一段时间后(主要是等 su 真的跑起来了),再写入密码,数据流过程与步骤 3、4 一致。

相关的代码片断:

696_10283@e"> 代码如下:
php
$descriptorspec = array(
0 => array("pipe","r"),// stdin
1 => array("pipe","w"),// stdout
2 => array("pipe","w") // stderr
);
$process = proc_open("python -c 'import pty; pty.spawn(\"/bin/sh\")'",$descriptorspec,$pipes);
if (is_resource($process)) {
fwrite($pipes[0],"su -c 'service ssh start' root\n");
fflush($pipes[0]);
sleep(3);
fwrite($pipes[0],"passworD\n");
fflush($pipes[0]);
fclose($pipes[0]);
fclose($pipes[1]);
fclose($pipes[2]);
proc_close($process);
}
?>

大佬总结

以上是大佬教程为你收集整理的在PHP中运行Linux命令并启动SSH服务的例子全部内容,希望文章能够帮你解决在PHP中运行Linux命令并启动SSH服务的例子所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。