2012-08-08 56 views
1

我正在尝试用perl创建远程登录脚本。我目前得到使用关闭回声IO ::套接字:: INET

$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; 
} 
+1

套接字不呼应。这与套接字无关。 – ikegami 2012-08-08 04:28:46

回答

0

这是本地控制台回声,无关你的插座。

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

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