2010-06-04 60 views
0

是換行符嗎?提示?究竟是什麼?PUTTY/PLINK如何確定已返回的命令?

試圖通過plink運行powershell並執行該命令,但plink無法識別它已完成並且會話掛起。然而,最令人好奇的是,當通過shell發送(通過Putty)時,該命令成功執行。但是,當通過plink發送時,相同的命令掛起...

任何想法?

回答

1

好吧,我還不太清楚問題所在,但是我通過TeamCity論壇找到了一個解決方法。

基本上你想呼應的一些abitrary字符串,並通過管道將輸出到您的PowerShell的可執行文件,像這樣:

echo 'executing powershell...' | C:\windows\system32\windowspowershell \v1.0\powershell.exe exit 1 

所以,那麼你完全砰砰命令變爲:

plink.exe [email protected] -i key.ppk -P 22 -batch -v "echo 'executing powershell...' | C:\windows\system32\windowspowershell\v1.0\powershell.exe exit 1" 

鈮。 Plink仍然會使用這種方法通過返回代碼和控制檯輸出。

鏈接的TeamCity論壇:

http://youtrack.jetbrains.net/issue/TW-6021

希望這有助於

1

Telnet幾乎是一個原始的TCP連接。所有Putty需要返回的是來自服務器的響應。其餘由shell和SSH/Telnet服務器控制。

當您的任務正在運行時,它不會返回命令提示符。

在Linux,Unix和Mac OS X上,可以在命令後面加上&,以便在後臺運行它並返回命令提示符。

嘗試在本地終端/命令shell中運行它。你應該基本看到同樣的事情。

+0

那麼說一個公平的假設,說powershell正在悄然成功?怎麼會這樣?我甚至明確設置了返回碼,回顯提示,拋出異常,它仍然掛起? – mwjackson 2010-06-04 16:39:21

+0

它運行得很快,甚至可能產生另一個進程,然後死亡?如果沒有,那麼shell就不會得到控制權。退貨代碼是如何返回的?它們是否被返回到服務器上的標準輸出?你應該把這個調用放在一個允許你處理返回碼的腳本中。 – 2010-06-04 16:42:17

+0

當我從外殼(膩子)運行時,它檢測到成功完成。當我通過plink運行它時,該命令仍然運行,但plink掛起等待響應? – mwjackson 2010-06-04 16:49:53

0

我有同樣的問題與其他程序。我在最後一個命令後使用了> & 2(將輸出重定向到std err),這對我來說工作得很好。

0

只需將「return XX」添加到遠程shell腳本中,它將返回本地控制檯的值。 plink完成後,鍵入echo %errorlevel%以查看返回碼XX。