Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用ssh在linux上安装java_Linux_Bash_Ssh_Rpm_Expect - Fatal编程技术网

使用ssh在linux上安装java

使用ssh在linux上安装java,linux,bash,ssh,rpm,expect,Linux,Bash,Ssh,Rpm,Expect,我想在许多使用ssh的计算机上安装java,因此我想编写一个bash脚本,该脚本可以(大致上)执行以下操作: 问题是,在java安装过程中,我需要“阅读”通知,并在最后键入“是”。我该怎么做?有比“预期”更简单的方法吗?如果不是的话,我如何在bash脚本中使用它 非常感谢首先,将必要的击键记录到如下文件中: cat > keystrokes 录制完击键后,按Ctrl+C组合键。检查文件内容。某些键(如TAB键)可能无法正确录制,但仍可以使用文本编辑器编辑文件。请注意,在控制台上向下滚动(

我想在许多使用ssh的计算机上安装java,因此我想编写一个bash脚本,该脚本可以(大致上)执行以下操作:

问题是,在java安装过程中,我需要“阅读”通知,并在最后键入“是”。我该怎么做?有比“预期”更简单的方法吗?如果不是的话,我如何在bash脚本中使用它


非常感谢

首先,将必要的击键记录到如下文件中:

cat > keystrokes
录制完击键后,按Ctrl+C组合键。检查文件内容。某些键(如TAB键)可能无法正确录制,但仍可以使用文本编辑器编辑文件。请注意,在控制台上向下滚动(例如,当从
more
读取输出时)通常可以使用空格键完成

您可以像使用rpm一样对该文件进行scp。接下来,通过管道将击键文件的内容传输到安装程序的标准输入:

cat keystrokes | ./someinstaller
编辑:很抱歉听到它不起作用。也许您可以看看,这是一个专门为这类事情设计的Unix工具。我认为它包含在大多数gnu/linux发行版中。如果您熟悉python,您可能会更喜欢它。

expect是一个不错的选择(谢谢):


这几乎有效,但不完全有效。似乎只有在我手动按下空格键后才能听到输入。请参阅以下帖子:
cat keystrokes | ./someinstaller
   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