#!/usr/bin/php <?php # Objetivo: Obter a data do ultimo login de e-mail dos usuarios # Autor: Silvio Garbes # Data: 03/09/2015 # Atualizado em: 11/04/2016 function before($this, $inthat){ return substr($inthat, 0, strpos($inthat, $this)); }; function after($this, $inthat){ if (!is_bool(strpos($inthat, $this))) return substr($inthat, strpos($inthat,$this)+strlen($this)); }; function between($this, $that, $inthat){ return before($that, after($this, $inthat)); }; // Obtem lista de todos os logs por data decrescente exec("ls -trw1 /var/log/maillog*", $ls); // Percorre toda a lista foreach($ls as $arquivolog){ $cat = NULL; if(strpos($arquivolog, ".gz")){ echo $arquivolog."\n"; exec("zcat ".$arquivolog." | grep \"LOGIN,\" ", $cat); }else{ echo $arquivolog."\n"; exec("cat ".$arquivolog." | grep \"LOGIN,\" ", $cat); } exec("date -r ".$arquivolog." +%Y", $ano); $ano = $ano[0]; // Percorre todas as linhas foreach($cat as $linha){ $arrayLinha = explode(" ", $linha); $mes = $arrayLinha[0]; if($arrayLinha[1] == ''){ $dia = $arrayLinha[2]; }else{ $dia = $arrayLinha[1]; } $usuario = between('user=', ',', $linha); $data = date("Y-m-d", strtotime($dia." ".$mes." ".$ano)); $ultimoLogin[$usuario]['data'] = $data; $aux = between(' ', ': LOGIN', $linha); $aux = explode(' ',$aux); $ultimoLogin[$usuario]['origem'] = $aux[count($aux)-1]; //break; } //break; } ksort($ultimoLogin); //print_r($ultimoLogin); foreach($ultimoLogin as $usuario => $value){ echo $usuario.",".$value['data'].",".$value['origem']."\n"; } ?> |