2014-01-30 25 views
0

我使用putty連接服務器並執行命令,但我不知道如何將命令輸出重定向到文本窗口小部件。 (?)stdout putty在文本部件

exec patchtoputty/putty.exe -ssh myserver -pw mypass -m mycommand 

通常這應該工作:

catch {exec patchtoputty/putty.exe -ssh myserver -pw mypass -m mycommand} results 
.text insert 1.0 $results 

但不是在這種情況下,我執行膩子(或例如Cygwin的)命令,它有自己的終端窗口。

問候, 盧卡斯

回答

2

這是非常棘手的抓取窗口的輸出,將其插入一個文本控件;你必須經常抓住屏幕和OCR結果或其他東西。荒謬。

但用膩子,你最好的選擇是改爲從同一個家庭切換到plink.exe(=「Putty LINK」)。它基本上是膩子,但沒有窗口的東西,並有能力在管道中很好地運行。它採用與putty相同的選項,因此修改代碼應該非常簡單。

catch {exec wherever/plink.exe -ssh myserver -pw mypass -m mycommand} results 
.text insert 1.0 $results 

(構建自己的膩子?只要確保你在同一時間建立砰砰)

+0

砰砰的工作不錯,但在我的情況時,我想執行一個命令使用遠程命令「-m mycommand的「我有一個answear」bash:command not found「。當我在登錄服務器(而不是通過遠程命令)後執行相同的命令時,它運行良好。我認爲在使用遠程命令時,plink有更改環境的問題嗎? – lucas

+0

@lucas遠程命令的運行是一個複雜的主題(tl; dr:有一些可能出錯的事情,以及很多你可以調整的事情),而且從我查看plink的細節開始,這已經有一段時間了,但是當進入任何POSIX-ish系統時,可以在運行該命令之前使用'/ usr/bin/env FOO = BAR mycommand'來設置一個變量。這可能有幫助。 (或者可能不是;我還沒有手動使用過plink一段時間) –

+0

我認爲問題是我試圖執行的命令是特定於安裝在服務器上的軟件的。 Plink正在與服務器連接並在他從軟件得到響應之前執行一個命令,這就是爲什麼他不能識別命令。也許有一種方法可以通過plink連接並在第二步執行一個命令(而不是在一行中)?也許期望會有幫助嗎?但即使如此,我有問題將其包裝到.exe文件(包未找到消息),還是有其他更簡單的方法? – lucas