codepad
[
create a new paste
]
login
|
about
Language:
C
C++
D
Haskell
Lua
OCaml
PHP
Perl
Plain Text
Python
Ruby
Scheme
Tcl
#! /usr/bin/perl # # Uso: # # disable.pl <logfile> <passwdfile> # ( open(LOG,$ARGV[0]) && open(PASSWD,$ARGV[1]) ) || die printUsage(); sub printUsage() { return "Uso del comando: disable.pl <logfile> <passwdfile>\n"; } sub salvaUtenti { foreach (@_) { $daDisabilitare{$_}++ if ($fallimenti{$_} >= 2); } } # foreach (<LOG>) while ($_ = <LOG>) { if( ($data,$utente) = /^([a-zA-Z]{3}\s+\d{1,2})\s.*authentication failure.*user=(\w+)/g) { if($vecchiadata ne $data) { salvaUtenti(keys(%fallimenti)); %fallimenti = (); } $fallimenti{$utente}++; $vecchiadata = $data; } } salvaUtenti(keys(%fallimenti)); open(TEMP,">tmp.txt"); while($_ = <PASSWD>) { if( /^(\w+):/ ) { if ($daDisabilitare{$1}) { $utente = $1; #@pezzettini = split(/:/,$linea); #$pezzettini[$#pezzettini] = '/bin/alert.sh'; #$linea = join(':',@pezzettini); s<(.*):(.+?)$><$1:/bin/alert.sh>g; $vecchiaShell{$utente} = $2; } } print TEMP $linea; } close TEMP; open(DISABLED,">disabled.txt"); foreach (keys %daDisabilitare) { print DISABLED "$_:$vecchiaShell{$_}\n"; } qx{cp tmp.txt $ARGV[1]};
Private
[
?
]
Run code
Submit