从Ruby传递变量作为shell的密码

时间:2014-07-01 15:40:45

标签: ruby shell

我想创建一个ruby脚本,该脚本从用户获取变量"获取"然后将此变量传递给Linux shell密码提示。

一个例子是:

sudo apt-get update

哪会产生:

[sudo] password for username:

Ruby脚本应该弹出该变量,以便可以执行更新。

任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:1)

出于安全原因,默认情况下,sudo不接受标准输入上的密码。你应该为你想要在没有提示的情况下执行的命令配置一个NOPASSWD:标签的sudoers文件,并调用带有-n标志的sudo,以确保你的脚本不会挂断等待输入

如果您坚持传入密码,请查看您的sudo是否支持-S标志,该标志(在我的系统上)显示:

   -S          The -S (stdin) option causes sudo to read the password from
               the standard input instead of the terminal device.  The
               password must be followed by a newline character.