【发布时间】:2019-04-05 08:15:26
【问题描述】:
我正在用 Ruby 创建一个 TCP 服务器,需要从用户那里获取密码。此密码不应回显。不幸的是,当我 telnet 到 8080 端口并输入:My password is echoed.
@server_socket = TCPServer.open(8080, localhost)
conn = @server_socket.accept
conn.write "Password: "
conn.gets.chomp # <-- This should not be visible
当我输入 telnet localhost 8080 时,我可以在屏幕上看到我的密码。
【问题讨论】:
-
password = conn.noecho(&:gets).chomp ##这也不起作用
-
您的意思是当您远程登录并输入您的密码时,它会在您输入时出现在您的控制台中?因为这是您的客户端的功能,而不是服务器的功能。
-
@anothermh:不可能?当用户远程登录到登录屏幕时;当他输入他的密码时,它不会显示出来。这是服务器而不是客户端的功能? (
-
我以为你必须自己实现回显,TCPServer真的回显吗?听起来像是普通 TCPServer 不想要的东西。
-
看来你应该是一种使用
IO#getpass方法的方法但是当我尝试时我得到Errno::ENXIO: Device not configured
标签: ruby