![](/img/trans.png)
[英]Execute background php script with shell_exec command that works with SSH
[英]How to execute remote SSH command in background using PHP exec()?
有沒有一種簡單的方法可以在后台使用PHP在遠程計算機上執行SSH命令而不使用ssh2_*
? PHP腳本是由用戶從bash(不涉及Apache)執行的,因此這不是權限問題。 我嘗試這樣做:
exec("ssh -f -o UnknownHostsFile=/dev/null -o StrictHostKeyChecking=no -i {$keyFile} {$user}@{$ip} {$remoteCommand} 2>&1 >/dev/null </dev/null");
例如:
exec("ssh -f -o UnknownHostsFile=/dev/null -o StrictHostKeyChecking=no -i /home/data/id_rsa user@192.168.0.19 '/home/user/script.sh ; exit' 2>&1 >/dev/null </dev/null");
所有PHP變量都已通過escapeshellarg()
進行了轉義,並且$remoteCommand
是遠程計算機上的bash腳本,該腳本會休眠幾分鍾,然后開始執行一些命令。
我的問題是,如果我從bash執行該SSH命令,它將立即將控制權交還給bash。 如果我使用exec()
從php執行它,它將等待直到遠程命令執行為止。 我嘗試在/home/user/script.sh
之后添加2>&1 >/dev/null </dev/null
,但是執行仍然不會將控制權返回給PHP腳本。
我認為您在將執行發送到后台的命令末尾缺少& 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.