Perl 让fakeidentd.pl脚本同时在ipv4和ipv6上侦听
我正在尝试更新一个充当ident的perl脚本,以便也在ipv6套接字上侦听Perl 让fakeidentd.pl脚本同时在ipv4和ipv6上侦听,perl,Perl,我正在尝试更新一个充当ident的perl脚本,以便也在ipv6套接字上侦听 #!/usr/bin/perl use strict; use warnings; use IO::Socket; use IO::Socket::IP; my($client,$socket); if (!defined($ARGV[0])) { die "Please supply ident\n"; } my $ident=$ARGV[0]; $socket = IO::Socket::IP->new(
#!/usr/bin/perl
use strict;
use warnings;
use IO::Socket;
use IO::Socket::IP;
my($client,$socket);
if (!defined($ARGV[0])) { die "Please supply ident\n"; }
my $ident=$ARGV[0];
$socket = IO::Socket::IP->new(
"Domain" => "PF_INET6",
"Proto" => "tcp",
"LocalPort" => 113,
Reuse => 1,
"Listen" => 1) or die "Error: $!\n";
print "using ident: $ident\n";
while ($client=$socket->accept()) {
my $host=$client->peerhost();
print "connection: ", $host . "\n";
my $data = <$client>;
if ($data) {
print "$host recv: $data\n";
$data =~ s/^\s+//;
$data =~ s/\s+$//;
$ident =~ s/^\s+//;
$ident =~ s/\s+$//;
print $client "$data : USERID : UNIX : $ident\n";
close $client;
}
}
undef $client if $client;
#/usr/bin/perl
严格使用;
使用警告;
使用IO::Socket;
使用IO::Socket::IP;
我的($client,$socket);
如果(!defined($ARGV[0]){die“请提供标识\n”;}
my$ident=$ARGV[0];
$socket=IO::socket::IP->new(
“域”=>“PF_INET6”,
“Proto”=>“tcp”,
“本地端口”=>113,
重用=>1,
“侦听”=>1)或“死亡”错误:$!\n;
打印“使用标识:$ident\n”;
而($client=$socket->accept()){
my$host=$client->peerhost();
打印“连接:,$host.\n”;
我的$data=;
如果($数据){
打印“$host recv:$data\n”;
$data=~s/^\s+/;
$data=~s/\s+$/;
$ident=~s/^\s+/;
$ident=~s/\s+$/;
打印$client“$data:USERID:UNIX:$ident\n”;
关闭$client;
}
}
未定义$client,如果是$client;
结果一点也不令人满意:
netstat-alpn | grep perltcp 0.0.0.0:113 0.0.0.0:*听
以下似乎有效:
$socket = IO::Socket::IP->new(
Domain => PF_INET6,
LocalHost => "::1",
"Proto" => "tcp",
"LocalPort" => 113,
Reuse => 1,
"Listen" => 1) or die "Error: $!\n";
结果:
# netstat -alpn | grep perl
tcp 0 0 ::1:113 :::* LISTEN 1357/perl
以下似乎有效:
$socket = IO::Socket::IP->new(
Domain => PF_INET6,
LocalHost => "::1",
"Proto" => "tcp",
"LocalPort" => 113,
Reuse => 1,
"Listen" => 1) or die "Error: $!\n";
结果:
# netstat -alpn | grep perl
tcp 0 0 ::1:113 :::* LISTEN 1357/perl
这是正确的TCP60:0::1:113::*侦听7777/perl这是正确的TCP60:0::1:113::*侦听7777/perl