試圖寫能夠運行UNIX命令作爲不同UNIX用戶的Java程序。我有用戶的密碼,我知道我要運行的命令,但該命令必須按該用戶運行 - 所以我必須先登錄,該用戶。運行UNIX命令爲不同的用戶,從Java
例如:假設我們有一個用戶,吉姆,誰願意看到什麼在bob的主目錄,(無論何種原因)吉姆有權訪問而鮑勃不執行LS。 我們目前以bob的身份登錄。以下是我們可以做的事情:
[email protected]$ su jim && ls ~bob
問題是,我們得到提示輸入jim的密碼。由於這是從Java程序運行的,即
Process p = Runtime.getRuntime().exec("su jim && ls ~bob");
我們得到提示輸入jim的密碼並掛斷。 我們知道吉姆的密碼。但是,我無法輸入。
此外,我們不能使用Expect腳本(沒有安裝它),我們不能成爲超級用戶。我也看了成使用SSH來試試這個,因爲我們可以在技術上做到
[email protected]$ ssh [email protected] "ls ~bob"
但這也因爲我沒有權限設置密碼的SSH不起作用。
我最後的努力是嘗試使用Java庫的SSH庫,因爲密碼可供Java程序使用,我將可以使用該密碼登錄(並執行正確的命令)。但是因爲我要在同一臺主機上運行,所以看起來好像過分了。
有什麼建議嗎?
P.S:Java版本1.4.2,無法升級; AIX UNIX 5.3。
您是否能夠在不使用第三方庫的情況下找到解決方法,如果可以,請分享一下? – HyperioN 2017-07-12 05:36:57