是否可以在遠程計算機(不是本地主機)上執行shell命令?例如之類的東西使用PHP執行shell命令,例如shell_exec()等,在遠程主機上?
$output = shell_exec("unzip filename.zip");
你可以假設你有一個遠程計算機上的用戶帳戶的登錄憑據,以及遠程root用戶名,密碼和的cPanel訪問密鑰。
是否可以在遠程計算機(不是本地主機)上執行shell命令?例如之類的東西使用PHP執行shell命令,例如shell_exec()等,在遠程主機上?
$output = shell_exec("unzip filename.zip");
你可以假設你有一個遠程計算機上的用戶帳戶的登錄憑據,以及遠程root用戶名,密碼和的cPanel訪問密鑰。
如果你的意思是「遠程計算機」,如「不是客戶端計算機」,答案是一個不合格的肯定;通過PHP的exec
函數運行的命令將在Web服務器上執行。
如果你的意思是「不是網絡服務器」,那麼答案是有點懦弱的。您只能在運行PHP的服務器上執行命令直接。但是,這些命令可以通過SSH等機制在遠程計算機上運行其他命令。因此,例如,如果您的Web服務器對遠程機器有無密碼的ssh訪問權限(一個非常糟糕的主意),這將工作:exec('ssh otherhost someremotecommand');
。什麼解決方案適合你取決於你想要的用法。
是的,沒有必要改變任何代碼來這樣做。但是,如果您的服務器將PHP置於安全模式(較低的共享主機計劃經常這樣做),您可能無法執行此操作。
提示:您可以使用這個速記得到命令的輸出:
$output = `command here`
我知道這個問題是很老,但對這一問題的觀衆。
您也可以使用ssh2_exec。 http://php.net/manual/en/function.ssh2-exec.php
<?php
$ip = 'ip_address';
$user = 'username';
$pass = 'password';
$connection = ssh2_connect($ip);
ssh2_auth_password($connection,$user,$pass);
$shell = ssh2_shell($connection,"bash");
?>