1

我正在尝试使用 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;
} 
4

1 回答 1

0

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

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

use IO::Termios;
my $stdin = IO::Termios->new(\*STDIN);
$stdin->setflag_echo(0);
于 2014-03-12T00:59:10.707 回答