my $servers={
srv01 => {user=>user1, pass=>pass1},
srv02 => {user=>user2, pass=>pass2}
};
foreach $server (keys %$servers) {
my $pass=$servers->{$server}->{pass};
my $user=$servers->{$server}->{user};
print "$server\n";
my $data=`plink -pw $pass $user\@$server df -h -l`;
my @lines=split(chr(10), $data);
for my $line (splice(@lines,1)) {
my @cols=split(/\s+/, $line);
(my $pct=$cols[4])=~s/\D//g;
print "\t$cols[0] -> $cols[4] ($cols[5] has $cols[3] free)\n" if $pct>90;
}
}
Através do plink, executo um "df -h -l" em cada máquina. Depois, basta processar o resultado, que será parecido com isto:
srv01
/dev/sda1 -> 95% (/ has 500MB free)
srv02
/dev/sdc1 -> 98% (/home has 25MB free)
Só são mostrados os discos com mais de 90% de uso.
Muito util! Mas usr/pwd? Autoriza tua chave nos servers, bem mais tranquilo ...
ResponderExcluirAdicionalmente: conheces o New Relic? Mesmo com um free account vc pode receber alertas no DumbPhone se alguma condicao requer atencao num server, como disco perigosamente cheio, uso de CPU anormalmente alto, etc etc etc ...
Sim, já usei o New Relic. Muito bacana, mas junto com o Grid Control do Oracle, já tenho sobrecarga de alertas. O objetivo de script é encontrar o disco problemático num momento de crise aguda.
ResponderExcluir