use Socket; use Carp; $| = 1; my $port = 23; my $proto = getprotobyname('tcp'); my $lf = "\x0a"; my $cr = "\x0d"; sub logmsg { print STDOUT "$0 $$: @_ um ", scalar localtime, "\n" } socket(Server, PF_INET, SOCK_STREAM, $proto) or die "socket: $!"; setsockopt(Server, SOL_SOCKET, SO_REUSEADDR, pack("l", 1)) or die "options: $!"; bind(Server, sockaddr_in($port, INADDR_ANY)) or die "bind: $!"; listen(Server, SOMAXCONN) or die "liste $1"; logmsg "Server an Port $port gestartet"; my $paddr; $SIG{CHLD} = \&REAPER; while ($paddr = accept(Client, Server)) { my($port, $iaddr) = sockaddr_in($paddr); my $name = gethostbyaddr($iaddr, AF_INET); my $cc; logmsg "Verbindung von $name [", inet_ntoa($iaddr), "] an Port $port"; select Client; $| = 1; print "password: "; read Client, $cc, 3; close Client unless $cc eq 'abg'; while ( $cc ne 'x' ) { &menu; read Client, $cc, 1; if ( $cc eq '1' ) { &funktion1; read Client, $anykey, 1; } if ( $cc eq '2' ) { &funktion2; read Client, $anykey, 1; } if ( $cc eq '3' ) { &funktion3 } if ( $cc eq 'x' ) { &funktionx; read Client, $anykey, 1; } } } sub menu { print "\n" x 50; print "\rWillkommen zu Appels Server-checker!\n\r"; print "--------------------------------------\n\r"; print "\n" x 8; print "\rFunktion waehlen:"; print "\t[1] Server Connectivty der ABG Frankfurt Holding\n\n\r"; print "\t\t\t[2] angemeldeten Benutzer zeigen\n\n\r"; print "\t\t\t[3] verbundene Netzlaufwerke zeigen\n\n\r"; print "\t\t\t[x] Programm beenden\r"; print "\n" x 8; } sub funktion1 { open HOSTS, "listeserver.txt"; @hostlist = ; foreach $host ( @hostlist ) { @ping = `ping -l 1 -n 1 $host`; if ($ping[3] =~ /Antwort/) { chomp ($host); print Client "$host Server ist erreichbar!\n\r"; } else {  chomp ($host);  print Client "$host Server konnte nicht erreicht werden!\a\n\r"; } close HOSTS; } } sub funktion2 { print Client "das ist funktion2"; } sub funktion3 { } sub funktionx { print Client "\n\r"; print Client "\t"; print Client "#" x 16; print Client "\n\r"; print Client "\tBye, Bye Baby!!!\n\r"; print Client "\n\r"; print Client "\t"; print Client "#" x 16; close Client; exit; }