我有一個php代碼作爲服務器使用命令行運行。我使用telnet客戶端連接到服務器沒有問題。但我不希望客戶端是telnet,我希望它成爲一個網頁,以便來自世界各地的客戶端可以連接。如何將網頁連接到服務器?連接網頁到命令行服務器
回答
爲了使用web界面連接到一個shell,你需要用PHP完整的Apache服務器,像燈/ WAMP
步驟:
- 創建一個網絡接口發送到服務器的命令看到結果。 ajax UI可能對此有用。我會建議你知道html/php/javascript,這對你來說不是一個問題。
- 的「高管」 PHP函數來調用命令: http://php.net/manual/es/function.exec.php
例子:
<?php
// Test the user!! you don't want that any one may use the command line of your server.
...
// Get the command to execute
$command='';
if (isset($_POST['command']))
{
$command = $_POST['command'];
}
// Execute your command
if ($command!='') echo exec($command);
?>
你應該考慮的錯誤發送到標準錯誤,所以如果你想看到的錯誤,它需要重定向: echo exec($ command。'2> & 1');
安全考慮:
- 使用SSL的所有通信
- 要非常小心,不要讓每一個來訪問你的shell,甚至用奇怪的代碼或網頁的修改。
- 測試是否允許$命令,不要執行任何操作。
- 請小心使用允許上傳文件的命令,例如「wget」。
其他注意事項: 這個腳本只允許執行簡單的指令,但不允許使用複雜的軟件全雙向通信,例如,你不能運行遊戲服務器,因爲這。 如果這是你的意圖,在Linux上有一個應用程序「屏幕」,允許重新連接到一個shell。
//Define a screen name, may be whatever, but must be unique
$myScreenName='MyWebApp';
// To launch the app:
echo exec('screen -S ' . $myScreenName . ' -d -m ' . $command . ' 2>&1 1>log.log');
// To re-connect to the shell in order to send new content:
echo exec('screen -S ' . $myScreenName . " -X -p0 stuff $'" . $command . "\n'");
// to test if the screen is active:
function testIfActive($myScreenName)
{
exec('screen -ls', $screenLS);
screenLs = implode('', $screenLS);
return (stripos($screenLs, $myScreenName)!==false);
}
// to read the output, just read the log.log file.
當我們已經有fsockopen來連接任何服務器套接字時,爲什麼需要做這麼多的exec。 – 2013-04-11 11:28:01
@ kuldeep.kamboj fsockopen是連接到套接字,而不是執行命令。我認爲我不瞭解你。 – 2013-04-11 11:36:58
是的你是對的,但是我的觀點是,對於artibitary服務器連接fsockopen是標準化的想法。您需要通過fwrite/fgets文件處理系列函數向其寫入/讀取數據。 – 2013-04-11 11:47:00
- 1. 通過Windows命令行連接到Gmail POP服務器
- 2. 通過命令行連接到服務器
- 3. 從命令行更改Access服務器連接
- 4. 如何使用命令行連接AWS mysql服務器?
- 5. 服務器端命令行
- 6. TSQL命令連接到另一臺服務器(SQL Server 2005)
- 7. 將FTP連接到服務器時出現「MLSD」命令錯誤
- 8. 通過命令行連接到Team Foundation服務
- 9. 從命令行執行DB2命令到遠程服務器
- 10. 從網站連接到Node.js服務器?
- 11. Mercurial連接到網絡服務器
- 12. aspx.net網站連接到SQL服務器
- 13. 連接到網關服務
- 14. 連接到網絡服務
- 15. 使用SSH /命令行FTP服務器到服務器
- 16. 命令行選項到MySQL服務器(作爲服務運行)
- 17. 服務器到服務器的連接
- 18. 爲什麼沒有這個telnet命令連接到命令行此套接字「服務器IP和SMTP端口」
- 19. Python TCP服務器接受連接和廣播命令
- 20. 套接字服務器關閉連接命令
- 21. php可以連接到遠程sql服務器,但命令行不能
- 22. 如何連接到Solaris服務器以從PHP腳本運行shell命令?
- 23. 通過命令行連接到遠程mysql服務器在windows中
- 24. fabric:連接到遠程服務器,然後在sudo su後執行命令 - user2
- 25. Python模塊pexpect - 如何連接到SSH服務器,然後運行bash命令
- 26. 無法連接到LINQ to SQL網頁上的SQL服務器
- 27. 錯誤嘗試連接到Windows服務器上使用命令行的mysql服務器
- 28. 連接到UDP服務器
- 29. iphone連接到服務器
- 30. 連接到服務器
安裝Apache? – 2013-04-11 10:24:41
我已經跟我 – 2013-04-11 10:28:28
安裝WAMP能否請您解釋更好的細節問題則 – 2013-04-11 10:29:55