2010-07-30 123 views
1

我有一臺服務器(debian lenny),頻譜分析儀,我已經下載了Steve Sharples's站點的源代碼集合。有了這些。 coudes我能夠連接到頻譜分析儀 - 鍵入命令並獲得響應。使用PHP從命令行讀取/寫入數據

例如:

my-atom:~/vxi11# ./vxi11_cmd 135.123.106.59 
Input command or query ('q' to exit): *IDN? 

,我也得到:Rohde&Schwarz,FSV-7,102004/007,1.50 SP1

我是否能夠連接到該服務器,寫命令,並使用PHP讀取性反應?我正在考慮套接字,但我不確定是否是最佳選擇。

任何幫助將不勝感激。

感謝, 切赫

回答

0

可以使用execshell_execsystem,或proc_open執行外部程序。

我會推薦proc_open,它允許你爲stdin,stdout和stderr設置管道。

查看proc_open鏈接。

+0

感謝布蘭登,我很喜歡shell_exec這正是我想要的。但麻煩的是,我有兩臺具有不同IP的物理機器(第一臺應用程序(服務器),第二臺分析器)。 如何從我的xxx.xxx.xxx.234連接到xxx.xxx.xxx.187運行shell命令,獲取數據併發送它們。 謝謝 – praethorian 2010-07-30 16:32:01

+1

如果你需要從php連接到遠程機器,我會推薦使用ssh和身份文件來使用這些執行方法之一。您可以使用ssh和身份文件在遠程服務器上執行命令,而無需提供密碼。 – 2010-07-31 03:27:35

0

你也可以這樣做:

$result = `SOME_COMMAND_HERE`; 
0

你可以用netcat的結合shell_exec

<?php 
$output = shell_exec('echo "TRAC? TRACE1" | netcat -q 1 135.123.106.59 5025'); 
echo "<pre>$output</pre>"; 
?> 

注意-q 1選項,這將導致netcat來等待1秒的答案。 「set」命令不需要等待。另外,*IDN?不需要等待時間,but many other query commands do

對此連接使用netcat危險地靠近裸機。您可能想編寫一個捕獲常見錯誤的shell腳本。然後,您可以使用shell_exec調用該腳本。

當然最好的方法是採取Steve Sharples free library並修改他的cmd示例以滿足自己的需要。