[ create a new paste ] login | about

Link: http://codepad.org/vmbJXPtM    [ raw code | fork ]

Perl, pasted on Oct 25:
#! /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]};


Create a new paste based on this one


Comments: