2011-05-10 73 views
4

我在寫一個在遠程機器上安裝java的腳本。在運行JRE的.bin文件之後,我如何設置替代方案--config java而無需用戶輸入任何東西。例如,當你輸入「alternatives --config java」時,系統會提示你選擇你想要的java版本。由於我安裝java的方式(「/ usr/sbin/alternatives --install/usr/bin/java java /location/of/jdk1.6/bin/java 2」),#「2」選項應該始終是我想要選擇的java。alternatives --config java bash腳本

因此,如何使用ssh命令執行,如何在不需要用戶選擇選項的情況下爲java選項選擇第二個選項。我希望它完全自動化。

這是一個bash腳本。

感謝


下面是代碼(現在可以正常工作):

#install the jre 
sshRetValue=`ssh -p "22" -i $HOME/sshids/idrsa-1.old ${1} " /home/geiser/jms_adapter/jre-6u25-linux-i586.bin "`; 
sshRetValue=`echo $?`; 
if [ "$sshRetValue" -eq 0 ];then 
     echo "java jre installed successfully"; 
     #set the alternative and stuff if needed 
     ssh -p "22" -i $HOME/sshids/idrsa-1.old ${1} " /usr/sbin/alternatives --install /usr/bin/java java /root/jre1.6.0_25/bin/java 2 "; 
     echo 2 | ssh -p "35903" -i $HOME/sshids/idrsa-1.old ${1} " alternatives --config java "; 
else 
     echo "java jre installation failed"; 
fi 

回答

2

一般情況下,你可以養活一個期望標準輸入類似這樣的東西的任何程序:

echo -e "line 1\nline 2\nline 3" | program 
+0

echo 2 | ssh -p「35903」-i $ HOME/sshids/idrsa-1.old $ {1}「alternatives --config java」;是我使用的確切代碼,它的工作完美。謝謝 – prolink007 2011-05-10 18:24:06

0

我用它做了這個腳本:

tmp=`mktemp` 
echo 2 > $tmp 
alternatives --config java < $tmp 
rm -f $tmp 

<表示$tmp文件的內容將傳遞到alternatives命令的輸入。

編輯:您可以簡單地使用其他建議單管:

echo 2 | sudo alternatives --config java

+0

爲什麼不只是'echo 2 |備用 - 配置java'? – 2011-05-10 18:18:40

+0

@Blagovest:我會嘗試你現在提出的建議。 – prolink007 2011-05-10 18:20:50

+0

工作,謝謝Blagovest。 – prolink007 2011-05-10 18:23:14

5

這與Java 8爲我工作:

alternatives --install /usr/bin/java java /usr/lib/jvm/jre1.8.0_60/bin/java 3 
alternatives --config java <<< '3' 
16

您可以運行alternatives命令未也是交互式的。而不是--config,請使用--set選項直接指定替代路徑。

sudo alternatives --set java /location/of/jdk1.6/bin/java 
+2

使用**選項--set **應該是要走的路,而不是嘗試將輸入傳遞給**選項--config **。 – rozaydin 2016-10-24 12:23:15