2011-04-12 65 views
1

我有一個命令行java程序,它接受一個密碼並從stdin中進行驗證。不幸的是,修改程序不是一種選擇,因爲它是專有的。將多行stdin輸入傳遞給交互式Java命令行程序,非交互式

我無法使用<從unix命令行傳遞參數,因爲程序中有兩個提示,都要求輸入相同的密碼。有一些stdout語句在命令提示符處詢問「Password」和「Password(validation):」。

如何將密碼非交互式地傳遞給該程序,以便可以使用cron作業/ RC腳本自動執行密碼?

謝謝!

回答

1

不知道Expect是否可接受。

+0

這絕對是一個選項,但我希望能夠解決這個問題,而無需安裝額外的RPMs – 2011-04-13 13:41:38

1

很可能密碼不是從標準輸入讀取的,而是從/ dev/tty中讀取的。在那種情況下,你運氣不好。

你可以運行該程序餵養所有的輸入,包括密碼通過標準輸入?如果不是,那麼你的運氣不好。

如果一切正常,但是,你可以通過你的問題做一些像

(echo user; echo passwd1; echo passwd1; cat) | java -jar yourCommandlineprogram.jar 
+0

看起來你是正確的 - 它將所有參數傳遞給第一個提示,並且我也以「stty:standard input:Invalid argument」異常結束 – 2011-04-13 13:40:03

+0

這是它試圖設置noecho模式的時候。 – Ingo 2011-04-13 15:35:27