![](/img/trans.png)
[英]Execute multiple CLI commands via ssh2_exec in the same shell
[英]How to execute a local Shell Script with SSH commands on server?
我想使用PHP在服務器上運行包含SSH命令的本地Shell腳本。 在腳本中,我使用ssh
運行ls -lart
類的命令,並將結果保存在服務器中的日志文件中,然后使用scp
將遠程文件復制到我的本地主機。 像這樣:
/// my_local_shell.sh
#!/bin/bash
host=$1
user=$2
port=$3
ssh -p $port $user@$host 'ls -lart >> /home/remote/file.log'
scp -P $port $user@$host:/home/remote/file.log /home/local/file.log
如果我使用終端user@local_host:~$ ./my_local_shell.sh
運行腳本,一切正常。 但是,如果我使用shell_exec()
使用PHP執行腳本,如下所示:
/// index.php
$output = shell_exec("my_local_shell.sh 192.168.1.1 root 2222");
echo <pre>$output</pre>;
屏幕上未打印任何內容,並且文件內的SSH命令未執行。
我知道我可以使用ssh2_shell()
,但是通過使用它,我必須在PHP內部發送命令,而這不是我想要的。
我已經給了index.php
和my_local_shell.sh
所需的權限
有什么想法可以做到嗎?
顯然,scp使用了無法捕獲的某種ncurses,因此可以在shell腳本中將-v標志添加到scp命令中
scp -v -P $port $user@$host:/home/remote/file.log /home/local/file.log
或者,由於scp成功返回0,因此您可以編寫
scp -P $port $user@$host:/home/remote/file.log /home/local/file.log && echo Success
至於PHP,請檢查您是否具有PHP的開始和結束標記,並更正您的echo語句
echo "<pre>".$output."</pre>";
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.