国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 系統(tǒng) > Linux > 正文

在PHP中運(yùn)行Linux命令并啟動(dòng)SSH服務(wù)的例子

2024-08-28 00:02:59
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

升級(jí) VPS 后,由于 Ubuntu 的 upstart 與 OpenVZ 的兼容問(wèn)題,導(dǎo)致 sshd 服務(wù)不自動(dòng)啟動(dòng)了,在嘗試了 vePortal 的 console 與 file manager 及提交技術(shù)支持后都不能解決問(wèn)題之后。

只能靠自己了,大概的思路是在 PHP 中進(jìn)行 su 命令以執(zhí)行 sshd 服務(wù),因?yàn)?WordPress 還活著,并且可以在后臺(tái)直接編輯主題相關(guān)的 PHP 腳本。只要把準(zhǔn)備好的代碼片斷插入到 header.php 中,并在瀏覽器中訪問(wèn)一下主頁(yè)即可。

相關(guān)的代碼邏輯
1. 使用 PHP 的 proc_open 打開(kāi)一個(gè)進(jìn)程,重定向 stdin, stdout, stderr, 這里會(huì)執(zhí)行一個(gè) python 程序。
2. 在這個(gè) python 程序中打開(kāi)一個(gè) pty,并運(yùn)行一個(gè) sh。
3. 利用步驟 1 中重定向的 stdin pipe 向 python 程序發(fā)送 su 命令, python 會(huì)將來(lái)自 stdin 的命令數(shù)據(jù)寫(xiě)到入 ptmx,而這時(shí) sh 的 stdin, stdout 及 stderr 是重定向到與 python 打開(kāi)的 ptmx 配對(duì)的 pts 上的。也就是說(shuō) su 命令最終會(huì)轉(zhuǎn)給 sh 進(jìn)程處理。
4. sh 進(jìn)程自然的執(zhí)行了 su 命令,這時(shí) su 進(jìn)程的 stdin, stdout, stderr 也會(huì)被重定向到那個(gè) pts 上。
5. 在 sleep 一段時(shí)間后(主要是等 su 真的跑起來(lái)了),再寫(xiě)入密碼,數(shù)據(jù)流過(guò)程與步驟 3、4 一致。

相關(guān)的代碼片斷:
復(fù)制代碼 代碼如下:
<?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);
  }
?>

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 兴仁县| 凌海市| 子长县| 凤山县| 钟山县| 南陵县| 文水县| 洛隆县| 日照市| 敖汉旗| 双辽市| 息烽县| 宜城市| 灵寿县| 延安市| 阳西县| 依安县| 黔江区| 乐清市| 石渠县| 左贡县| 克拉玛依市| 嘉峪关市| 甘孜县| 鄂伦春自治旗| 应用必备| 广州市| 娄烦县| 铜梁县| 新邵县| 咸宁市| 商城县| 夏津县| 沙田区| 习水县| 海原县| 文成县| 郓城县| 保德县| 蒙阴县| 门源|