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 に答える