home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Acorn User 10
/
AU_CD10.iso
/
Updates
/
Perl
/
Non-RPC
/
!Perl
/
scripts
/
finger
< prev
next >
Wrap
Text File
|
1997-06-10
|
1KB
|
43 lines
#!perl -w
use Socket;
($dest, $port) = @ARGV;
$port = 'finger' unless $port;
($who,$where) = $dest =~ m/(.*)@(.*)/ if defined $dest;
die "$0: victim\@host [port]\n" unless $where;
$sockaddr = 'S n a4 x8';
($name, $aliases, $proto) = getprotobyname('tcp');
($name, $aliases, $port) = getservbyname($port, 'tcp') unless $port =~ /^\d+$/;
($name,$aliases,$type,$len,$thataddr) = gethostbyname($where);
undef $type; undef $len; # Keep -w happy
die "Unknown host $where" unless defined $name;
$that = pack($sockaddr, &AF_INET(), $port, $thataddr );
socket(S, &PF_INET(), &SOCK_STREAM(), $proto) || die "socket: $!";
# bind(S,$this) || die "$!";
connect(S,$that) || die "$!";
# Set socket to be command buffered.
select(S); $| = 1; select(STDOUT);
# print "Going for $who\@$where\n";
print "[$name]\n";
print S "/w $who\r\n";
# If you really want to know what local address we are bound to...
# $addr = getsockname( S );
# @addr = unpack( 'xxxx CCCC', $addr );
# print "we are " . join( '.', @addr ) . "\n";
print while defined( $_ = <S> );