2012-09-11 77 views
0

出於測試目的,我自動創建配置的EC2計算機。創建/配置通過ssh連接完成(各種操作系統的邏輯相同)。在Windows(Windows 2003 Server)上,有一個預先配置好的ssh的cygwin,這樣我就可以在那裏ssh了。無法通過cygwin/ssh在Windows上安裝Java JDK

作爲配置的一部分,我需要安裝給定版本的Java SDK。我將exe安裝程序(jdk-6u34-windows-i586.exe)上傳到本機,並使用/ s參數(靜默安裝)運行它。當我從Windows控制檯(遠程桌面)或者通過遠程桌面中的cygwin運行這個功能時,它可以很好地工作。但是當我ssh到那裏並通過ssh在cygwin中運行時,如果失敗。

的失敗似乎是很奇怪的,因爲安裝程序部分提取它的內容爲c:\Documents and Settings\Administrator\Application Data\Sun\Java\jdk1.6.0_34,然後失敗,退出代碼67。退出之前提取的文件數量各不相同。

以編程方式使用Java和Jsch執行此操作時,該命令還將錯誤消息initgroups: Permission denied打印到錯誤流。當我通過ssh手動連接時,我沒有看到這個消息,所以我不確定,如果它是相關的(當使用谷歌搜索時,我發現這個錯誤發生在完全不同的上下文,這並沒有幫助我)。

我會歡迎任何解釋,爲什麼會發生這種情況(以及如何修復/解決此問題)。其他提示如何在EC2窗口機器上可靠地自動安裝給定的JDK也受到歡迎。謝謝。

+1

你試過沒有'/ s'(靜默模式)參數嗎?它可能會爲您提供更多信息來調試問題。 –

+0

將SSH用作「跨平臺」解決方案似乎對我來說有點奇怪。我建議嘗試使用Ant或其他(例如python)腳本工具,這是一個跨平臺的工具。 Cygwin最好是片狀,甚至表示它不能替代unix機器上的shell終端。像一個一樣處理它可能會導致更多的麻煩,而不是它的價值。 –

+0

好點。當沒有'/ s'運行時,結果是一樣的。 我們不使用ssh/cygwin作爲真實腳本。這只是一種方式,如何執行一些簡單的任務 - 在目標機器上覆制文件,執行某些事情等。如果我們使用和或python,我們無論如何不得不以某種方式啓動它們。 – Michal

回答

0

事實證明,在Windows(某些版本)中存在一些有意的體系結構分離,即服務無法訪問UI。

由於cygwin ssh-daemon作爲服務運行,因此無法進行UI調用或啓動基於UI的程序。 JDK安裝程序是基於UI的(它似乎在靜默模式下做了一些UI-ISH),這被禁止了。

從遠程桌面會話運行相同時,它一切正常,因爲那裏的用戶界面是可訪問的。