我正在尝试使用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;
}
答案 0 :(得分:0)
这是本地控制台回显,与您的套接字无关。
有许多方法可以使用Perl关闭控制台回声,但我最喜欢的是IO::Termios
(也许我有偏见因为我写了它;)
use IO::Termios;
my $stdin = IO::Termios->new(\*STDIN);
$stdin->setflag_echo(0);