簡體   English   中英

PHP:對遠程主機執行服務器命令

[英]PHP: Execute Server Commands To Remote Host

我是 PHP 世界的新手,但想要設置一個相對簡單的 PHP 腳本,當用戶按下網頁上的按鈕時,該腳本將通過 ssh2_exec 向遠程主機執行 shell 命令。 我希望通過 POST 而不是 GET 來處理它。 我想避免使用 bash 腳本的 Web CGI。

ssh2_exec 上查看此文檔后,我能夠對需要完成的工作有所了解,但我仍然需要相當多的幫助。

為了幫助更好地理解我要完成的任務,讓我解釋一下。 我希望在頁面上有兩個文本字段和一個提交按鈕。 我們將這些文本字段稱為$var1$var2 我希望用戶填寫兩個文本字段,點擊提交,然后向遠程服務器提交一個命令,如下所示:

# [root@server] $var1 /home/$var2.sh

現在我離我需要去的地方不遠了,但以下是我自己編譯的(非工作)代碼,正在尋找使其工作或改進的方法。 我也意識到連接到遠程服務器並通過 PHP 腳本以 root 身份運行命令不是一個好主意。 但這純粹是為了開發/測試而不是生產。 我只是想熟悉這個過程。 無論如何,這就是我所擁有的:

<?php
    $connection = ssh2_connect('192.168.1.1', 22);
    ssh2_auth_password($connection, 'root', 'password');

    if (isset($_POST['button']))
    {
         $stream = ssh2_exec($connection, 'touch /root/test/test.txt');
    }
?>
<html>
<body>
    <form method="post">
    <p>
        <button name="button">Touch</button>
    </p>
    </form>
</body>

同樣,我確信上面的代碼對於開發人員來說看起來很糟糕並且完全不正確,但是正如我所說的,我是 PHP 的新手,所以這只是我自己盡力而為。

因此,話雖如此,如果有人有任何類型的見解、有用的鏈接、提示或任何內容 - 將不勝感激!

看到那個帖子:其他帖子

<?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');
?>

使用這個庫應該可以幫助你完成你所需要的。

只要是為了測試。 否則,我會使用XML-RPC來調用服務器端程序

我將嘗試解釋您需要執行的步驟才能完成您想要的操作。

  1. 你會想要在你的網站上的某個地方有一個 HTML 頁面。 這可能是一個僅包含以下內容的index.html

    <html> <body> <form method="post"> <input type="text" id="text1"><br> <input type="text" id="text2"><br> <button name="button">Touch</button> </form> </body>

  2. 您將不得不研究一種稱為 JavaScript 的語言。 JavaScript 將允許您獲取在文本框中輸入的值並通過稱為 Ajax 的東西將它們發送到 PHP。

    http://www.w3schools.com/ajax/ajax_intro.asp

    簡而言之,Ajax 是您的網站與服務器和客戶端進行通信的一種方式。 您可以將數據從客戶端(您的 HTML 頁面)發送到您的服務器 (PHP) 並在那里處理數據。

    但是,還有另一種選擇,您可以使用當前代碼並將action屬性添加到<form>標記並將用戶重定向到您的 PHP 頁面,然后根據需要使用$_POST獲取數據。

    這是一個例子: http : //www.w3schools.com/php/php_forms.asp

  3. 完成上述步驟后,無論是 Ajax 帖子還是表單帖子,您現在都可以在 PHP 中處理所有值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM