【问题标题】:Turn off echo IO::Socket::INET关闭回显 IO::Socket::INET
【发布时间】:2014-03-12 08:59:10
【问题描述】:

我正在尝试使用 perl 创建一个远程登录脚本。我目前正在使用

获取输入数据
$var = <$client>; 
chomp $var;

但是,我正在尝试让客户端输入密码,并且我想通过不回显输入的内容来以 linux 方式与客户端隐藏密码。有什么办法可以做到吗?

编辑:

$serv = IO::Socket::INET->new ( 
Proto => 'tcp',
LocalPort => $port,
Listen => 10,
Reuse => 1)
|| die "Can't create server: $!";

while ($client = $serv->accept()) {
eval {
$client->autoflush(1); # Always remember to flush!
$who = $client->peerhost;
print STDERR "Connection from $who\n";
print $client hostname . " login: ";
$usr = <$client>;
chomp $usr;
$usr =~ s/\W//g;
print STDERR "User $usr\n";
die unless (length $usr < 20 && length $usr > 1);
print $client "Encrypted Password: ";
$pass = <$client>;
chomp $pass;
die unless (length $pass < 20 && length $pass > 1);
print STDERR "$who: Pass $pass\n";
};
close $client;
} 

【问题讨论】:

  • 套接字不回显。这与套接字无关。

标签: perl sockets


【解决方案1】:

这是本地控制台回显,与您的套接字无关。

使用 Perl 有很多方法可以关闭控制台回显,但我最喜欢的是 IO::Termios(也许我有偏见,因为我写了它;))

use IO::Termios;
my $stdin = IO::Termios->new(\*STDIN);
$stdin->setflag_echo(0);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-11-24
    • 2015-01-27
    • 2023-04-03
    • 2021-01-30
    • 1970-01-01
    • 2022-12-22
    • 2012-03-08
    相关资源
    最近更新 更多