PHP_PHP チュートリアルでの Linux コマンドの実行と SSH サービスの開始の例

WBOY
リリース: 2016-07-13 10:28:22
オリジナル
962 人が閲覧しました

VPS をアップグレードした後、Ubuntu の upstart と OpenVZ の間の互換性の問題により、sshd サービスが自動的に開始されませんでした。vePortal のコンソールとファイル マネージャーを試し、テクニカル サポートに送信しましたが、問題は解決できませんでした。

信頼できるのは自分自身だけです。WordPress はまだ生きており、テーマ関連の PHP スクリプトをバックグラウンドで直接編集できるため、PHP で su コマンドを実行して sshd サービスを実行するのが一般的です。準備したコード スニペットを header.php に挿入し、ブラウザでホームページにアクセスするだけです。

関連コードロジック
1. PHP の proc_open を使用してプロセスを開き、stdin、stdout、stderr をリダイレクトします。ここで Python プログラムが実行されます。
2. この Python プログラムで pty を開き、sh を実行します。
3. ステップ 1 でリダイレクトされた stdin パイプを使用して su コマンドを Python プログラムに送信します。このとき、Python はコマンド データを stdin から ptmx に書き込みます。ペアリングされた pts の ptmx を使用します。つまり、su コマンドは最終的に sh プロセスに転送されて処理されます。
4. sh プロセスは当然 su コマンドを実行します。このとき、su プロセスの stdin、stdout、stderr もその pts にリダイレクトされます。
5. 一定期間スリープした後 (主に su が実際に実行を開始するのを待ちます)、データ フロー プロセスは手順 3 と 4 と同じです。

関連コード スニペット:

コードをコピー コードは次のとおりです:

$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 'サービス ssh start' rootn");
fflush($pipes[0]);
sleep(3);
fwrite($pipes[0], "PASSWORDn");
fflush($pipes[0]);
fclose ($ Pipes[0]);
fclose($pipes[1]);
fclose($pipes[2]);
proc_close($process);
}
?>

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/788643.html技術記事 VPS をアップグレードした後、Ubuntu の upstart と OpenVZ の間の互換性の問題により、vePortal のコンソールとファイル マネージャーを試し、テクニカル サポートに送信した後、sshd サービスが自動的に開始されませんでした...
関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!