簡體   English   中英

如何使用PHP和遠程ssh從文本文件中獲取信息?

[英]How to get information from text file using PHP and remote ssh?

我遇到了這樣的問題,即PHP用遠程ssh執行bash腳本並在日志上執行grep時,性能非常差。 在網絡瀏覽器中,我在40秒后收到輸出。 直接在本地計算機上執行bash腳本(遠程計算機上的ssh + grep)需要8秒鍾。 我知道我不能繞過這個,所以我想到了:

創建PHP腳本,它將我需要的所有“變量”保存到本地計算機上的文本文件中。 我們稱之為“ parameters.txt”。 然后其他bash腳本“ reader.sh”將讀取此“ parameters.txt”文件,執行遠程ssh和grep的所有功能,然后將輸出保存到“ output.txt”。 后台腳本將每2秒運行一次reader.sh

這是個好主意嗎?

如果您確實需要通過SSH使用PHP,則可以使用諸如http://phpseclib.sourceforge.net/之類的東西。 他們有一個很好的ssh實施,我曾經用它來部署應用程序和配置Linux服務器(用人偶代替了它)。 您的代碼將更加整潔且易於維護。

另一個選擇是,如果您正在從Linux讀取日志(消息,apache,syslog等),則可以選擇使用Rsyslog( http://www.rsyslog.com/ )將其集中在服務器上並對其進行處理本地。 這對於您的計算機而言更便宜,並且更易於部署。

這是您快速執行的方法。 我最近發布了一個項目,該項目允許PHP即使通過SSH也可以獲取真實的Bash shell並與之交互。 在這里獲取它: https : //github.com/merlinthemagic/MTS

下載后,您只需使用以下代碼:

$shell = \MTS\Factories::getDevices()->getRemoteHost('ip_address')->getShellBySsh('username', 'secretPassword');

//execute the grep command
$return1  = $shell->exeCmd("cat /full/path/to/logfile | grep \"someExpression\"");

echo $return1; //contains all the return that matched the grep expression

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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