我必须从JAVA触发一个RPM命令。该命令如下所示。
rpm -addsign apc.rpm此RPM在内部称为GPG。GPG将需要一个密码,它最终将密码传递回RPM,RPM在命令行上将控制权抛回给用户,等待密码。我不希望用户输入该密码。我想以某种方式将该密码提供给RPM,这样用户除了简单地运行JAVA程序之外不需要做任何事情。像下面这样提供密码是没有帮助的。
rpm -addsign abc.rpm -passwd由于这个密码不是RPM使用的,而是简单地抛出GPG要求的任何东西,所以上面提到的方法将不起作用。有没有一种方法可以给出一个文件作为后续问题的输入?
我怎么才能让这成为可能呢?任何建议都会有很大帮助。
发布于 2015-01-09 23:34:00
实际上,密码是rpm读取并传递给gpg的内容。
该问题存在于getpass(3)中,用于读取重新打开/dev/tty以关闭回显等的密码。
因此,在调用rpm --addsign之前,需要将一个伪tty附加到/dev/tty (这将允许传递输入,就好像它来自键盘一样)。
简而言之:使用expect (这将完成创建伪tty/将其附加到/dev/tty的繁重工作)。
https://stackoverflow.com/questions/27858417
复制相似问题