簡體   English   中英

如何在服務器上使用SSH命令執行本地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.phpmy_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.

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