我要安装使用ssh多台计算机上的Java,所以我想编写一个bash脚本,将做(大约):

for c in computers
do    
   scp jre--.rpm $c
   ssh $c 'sudu -s; chmod a+x jre--.rpm ; ./jre--.rpm; echo "success!"'
done

的问题是,在Java安装过程中,我需要“读”的通知,并键入“是”在末端。我该怎么做?难道还有比“期望”更简单的方法?而如果不是如何我适应它在bash脚本?

非常感谢

有帮助吗?

解决方案 2

想到的是去(感谢 http://www.dnmouse.org/java.html方式):

   for c in computers
   do    
       scp jre--.rpm $c
       ssh -t $c 'sudo -s; yum -y install expect; sudo chmod a+x jre--.rpm'
       ssh -t $c '/usr/bin/expect -c \
       "set timeout -1; spawn ./jre-6u13-linux-x64-rpm.bin; sleep 1; send -- q\r; sleep 1; send -- yes\r; expect eof"
       echo "success!"'
   done

其他提示

首先,记录必要的击键这样一个文件:

cat > keystrokes

按<大骨节病>控制 + <大骨节病> C 当你完成录制按键。检查文件内容。像TAB某些键可能无法正常录制,但你仍然可以编辑一个文本编辑器文件。注意,向下滚动一个控制台上(例如读取来自more输出时)可以典型地与所述空格键来完成。

像你已经使用rpm做可以SCP的这个文件。接着,管的击键的内容文件来安装程序的标准输入:

cat keystrokes | ./someinstaller

编辑:遗憾听到这个消息不起作用。也许你可以看看期待,这是一个Unix工具,设计这样的事情。我认为,在大多数的的GNU / Linux 的分布是包括在内。如果你熟悉Python你可能更 Pexpect的代替。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top