2012-08-08 3 views
1

perl로 원격 로그인 스크립트를 만들려고합니다. 나는 현재 내가 클라이언트 입력에 암호를하려고 내가하지 입력 어떤 반향하여 클라이언트와 리눅스 방식으로 암호를 숨기려는, 그러나echo IO :: Socket :: INET

$var = <$client>; 
chomp $var; 

를 사용하여 입력 데이터를 얻고있다. 내가 이것을 할 수있는 방법이 있습니까?

편집 :

$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

소켓 표시하지 않는다 (내가 쓴 때문에 아마도 내가 편견이야)

펄을 사용하여 에코 콘솔을 해제하는 방법에는 여러 가지가 있지만, 내 마음에 드는 IO::Termios입니다. 소켓과는 아무런 관련이 없습니다. – ikegami

답변

0

이 로컬 콘솔 에코, 당신의 소켓과는 아무 상관이있다.)

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