加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

等待在Bash脚本中输入调用Ruby获取

发布时间:2020-12-15 20:55:31 所属栏目:安全 来源:网络整理
导读:我使用一些Heroku客户端命令的 Bash脚本,例如heroku create.这些命令是用 Ruby和 include calls到 IO::gets编写的,用于收集用户的名称和密码.但是,如果从Bash脚本中调用它们,它似乎会进入最后一次获取.例如,在Heroku客户端要求电子邮件和密码的情况下,第一个
我使用一些Heroku客户端命令的 Bash脚本,例如heroku create.这些命令是用 Ruby和 include calls到 IO::gets编写的,用于收集用户的名称和密码.但是,如果从Bash脚本中调用它们,它似乎会进入最后一次获取.例如,在Heroku客户端要求电子邮件和密码的情况下,第一个被跳过,用户只能输入他们的密码:

Enter your Heroku credentials.
Email: Password: _

有没有办法修复或陪审Bash脚本以防止这种情况发生(当从命令行手动运行完全相同的命令时,不会发生这种情况.)或者必须在Ruby中更改某些内容?

[更新 – 解决方案]

我无法解决上面的问题,但@geekosaur’s answer另一个问题让我走上正确的轨道,使终端“可用”到Bash内部运行的Ruby脚本.我改变了所有:

curl -s http://example.com/bash.sh | bash

bash < <(curl -s http://example.com/bash.sh)

成为

bash <(curl -s http://example.com/bash.sh)

解决方法

尝试在控制终端设备/ dev / tty上重新打开stdin.

exec 0</dev/tty  # Bash

$stdin.reopen(File.open("/dev/tty","r"))  # Ruby

# Bash examples
: | ( read var; echo $var; )  
: | ( read var </dev/tty; echo $var; )
: | ( exec 0</dev/tty; read var; echo $var; )

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读