簡體   English   中英

如何使用PHP exec()在后台執行遠程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.

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