linux - 使用 ssh 在 linux 上安装 java

标签 linux bash ssh rpm expect

我想使用 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 安装期间我需要“阅读”通知并在末尾键入"is"。我该怎么做?有没有比“期望”更简单的方法?如果不是,我如何将它放入 bash 脚本中?

非常感谢

最佳答案

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

cat > keystrokes

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

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

cat keystrokes | ./someinstaller

编辑:很遗憾听到它不起作用。也许你可以看看 expect ,这是专为此类事情设计的 Unix 工具。我认为它包含在大多数 gnu/linux 发行版中。如果您熟悉 python,您可能更喜欢 pexpect相反。

关于linux - 使用 ssh 在 linux 上安装 java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1495599/

相关文章:

linux - 更改为nologin后无法启动postgres

bash - Ubuntu Bash 脚本按时间顺序更改文件名

bash - Git 哈希输出与 sha1sum 不匹配,为什么?

macos - 如何在 Mac 上安装 ssh-copy-id?

linux - 如何在多个主机上使用 ssh 和 xargs 运行 bash 脚本而不将脚本复制到每个主机?

linux - 如何使用Pacemaker重启httpd

linux - 流重定向顺序和操作系统执行的详细信息

mercurial - 推送 SSH 时抑制 TortoiseHg 中的 "Push to remote repository?"提示

php - 在 Linux 上使用 mod_xsendfile 使用 PHP 下载大文件

c - 转储进程内存