Comando arp -a [RESOLVIDO]

1. Comando arp -a [RESOLVIDO]

Vinícius Pedra
viniciuspedra

(usa Debian)

Enviado em 09/11/2011 - 11:11h

Prezados, bom dia!

Tenho um servidor rodando o debian com o apache, squid, firewall e nele gostaria de colocar um script que de hora em hora desse o comando arp -a e que este mesmo resultado fosse salvo na máquina e q me enviasse por email o resultado.

Há essa possibilidade?
Como eu faria?


  


2. MELHOR RESPOSTA

Raimundo Alves Portela
rai3mb

(usa Outra)

Enviado em 09/11/2011 - 22:56h

Basicamente você teria que fazer um script, depois agenda ele no cron para executar de hora em hora (todos os dias, se for o caso)

script

#!/bin/bash
arp -a > relatorio_arp.txt

#Envia o email com o conteúdo do relatório no corpo do email e aproveito para enviar o nome da máquina no assunto do email
cat relatorio_arp.txt | mail seu_email@algumacoisa.com -s "Relatorio do arq $HOSTNAME"


Depois agende
contrab -e
coloque o conteúdo:
00 * * * * /caminho/ate/o/script/script.sh

Basta salvar e tá agendado.

Se o comando mail não estiver funcionando no seu micro, veja como configurar, tem conteúdo cobrindo esse assunto aqui mesmo no Vol.
Abraços




3. Re: Comando arp -a [RESOLVIDO]

Vinícius Pedra
viniciuspedra

(usa Debian)

Enviado em 10/11/2011 - 07:29h

bah interessante...

soh a questão do enviar e-mail q não me atenderia bem pois necessito gravar no mysql o dia, a hora e o endereço MAC que está conectado naquele momento

tipow poderia ser na própria maquina local mesmo

existe essa possibilidade?


4. Re: Comando arp -a [RESOLVIDO]

Vinícius Pedra
viniciuspedra

(usa Debian)

Enviado em 10/11/2011 - 09:10h

estava analisando aqui, queimando neuronios...
localmente existe porém terei que criar uma rotina em PHP que abra o arquivo e separe os itens... e add no mysql :D


5. Re: Comando arp -a [RESOLVIDO]

Dennis Henrique Leandro da Silva
dennis.leandro

(usa Debian)

Enviado em 10/11/2011 - 09:31h

viniciuspedra escreveu:

estava analisando aqui, queimando neuronios...
localmente existe porém terei que criar uma rotina em PHP que abra o arquivo e separe os itens... e add no mysql :D


Exato!

Só uma alteração na resposta acima do nosso amigo!
O Debian Estável, mudou de mail para mutt

Ao invés de colocar o comando mail, coloque o mutt no lugar!

Abraço, e se a resposta do amigo, te ajudou, ele merece os 500 pontos!
;D


6. Re: Comando arp -a [RESOLVIDO]

Vinícius Pedra
viniciuspedra

(usa Debian)

Enviado em 10/11/2011 - 09:46h

hehehe com toda certeza...
é merecido os 500 pontos...
agora estou quebrando a cabeça em fazer com que o php separe os dados e faça uma substituição no q eu não preciso de dados ;)



7. Re: Comando arp -a [RESOLVIDO]

Raimundo Alves Portela
rai3mb

(usa Outra)

Enviado em 10/11/2011 - 10:16h

Dar pra fazer via shell script também ;-)

Que informações precisa colocar na tabela???

basicamente o comando para usar o mysql com o shell fica:

$ mysql -u USUARIO -pSEMHA -e "INSTRUCAO SQL"



8. Re: Comando arp -a [RESOLVIDO]

Vinícius Pedra
viniciuspedra

(usa Debian)

Enviado em 10/11/2011 - 10:57h

tipow...

no caso do comando arp -a eu vou ter como resultado por exemplo:


? (192.168.0.103) em 00:1f:1f:4d:d1:fb [ether] em eth0
? (192.168.190.5) em 00:27:22:16:2c:4f [ether] em eth0
dsldevice.nomedosite.com.br (10.0.0.253) em 00:1a:3f:63:7e:13 [ether] em eth1


daeee eu preciso incluir no MySql o endereço de IP e o MAC listado acima...

eu to ake tentando em php e já consegui fazer com que o php abra o arquivo e conte as linhas. Usei como delimitador a palavra [ether] e obtive o resultado:

? (192.168.190.5) em 00:27:22:16:2c:4f

agora em cima do resultado, vou fazer um str_replace nas informações da interrogação até o parenteses que abre e depois no parenteses que fecha até a palavra "em", sendo substituido por um ponto e virgula para add no banco...
=D





9. Re: Comando arp -a [RESOLVIDO]

Vinícius Pedra
viniciuspedra

(usa Debian)

Enviado em 10/11/2011 - 11:19h

finalizei o php agora a pouco... daqui a pouco eu posto aqui!


10. Re: Comando arp -a [RESOLVIDO]

Raimundo Alves Portela
rai3mb

(usa Outra)

Enviado em 10/11/2011 - 11:37h

Com shell poderia ser feito assim:


while read LINHA
do

if echo "$LINHA" | egrep -q '\([0-9]*.[0-9]*.[0-9]*.[0-9]*\)'
then
#filtra o IP
IP=$(echo "$LINHA" | cut -d' ' -f2 | egrep -o '[0-9]*.[0-9]*.[0-9]*.[0-9]*')
#filtra o MAC
MAC=$(echo "$LINHA" | cut -d' ' -f4)
# incluir o resultado em outro arquivo, para posterior uso com PHP
echo "$IP;$MAC" >> novo_resultado.txt
#ou Usa em instrução para o mysql
mysql -u USUARIO -pSEMHA -e "INSERT INTO tabela(ip,mac) VALUES('$IP','$MAC')"

done < arquivo_resultado.txt






11. Re: Comando arp -a [RESOLVIDO]

Adriano Moreira da Silva
adri3d

(usa Arch Linux)

Enviado em 10/11/2011 - 11:39h

viniciuspedra escreveu:

tipow...

no caso do comando arp -a eu vou ter como resultado por exemplo:


? (192.168.0.103) em 00:1f:1f:4d:d1:fb [ether] em eth0
? (192.168.190.5) em 00:27:22:16:2c:4f [ether] em eth0
dsldevice.nomedosite.com.br (10.0.0.253) em 00:1a:3f:63:7e:13 [ether] em eth1


daeee eu preciso incluir no MySql o endereço de IP e o MAC listado acima...

eu to ake tentando em php e já consegui fazer com que o php abra o arquivo e conte as linhas. Usei como delimitador a palavra [ether] e obtive o resultado:

? (192.168.190.5) em 00:27:22:16:2c:4f

agora em cima do resultado, vou fazer um str_replace nas informações da interrogação até o parenteses que abre e depois no parenteses que fecha até a palavra "em", sendo substituido por um ponto e virgula para add no banco...
=D




para simplificar o php tente isso

arp -a | awk '{print $4}' > relatorio_arp.txt


saira só os mac no relatorio, to aprenderndo awk agora,



12. Re: Comando arp -a [RESOLVIDO]

Vinícius Pedra
viniciuspedra

(usa Debian)

Enviado em 10/11/2011 - 11:50h

vamos lá...

partindo então dos dados do arquivo que o comando arp -a salvou, fiz a seguinte gambiarra...

<?
$arquivo = "arquivo_salvo.txt";

$meuArray = file("$arquivo");

for ($n=0; $n < count($meuArray); $n++)
{}

@abre = fopen("$arquivo","r");
if (!$abre)
{
echo "Ops! Ocorreu um erro ao abrir o arquivo!";
exit;
}

for ($i=0; $i < $n; $i++)

{
$le = fgetss($abre,1024);
$le = explode("[ether]",$le);

$lido1 = strtoupper(trim($le[0]));

$result1 = str_replace("? (","",$lido1);
$result2 = str_replace(") EM","",$result1);

echo "$result2";
echo "<br>";

}
?>


Dae fica apenas pendente para finalizar, o insert no banco de dados que não é coisa dificil :D



01 02



Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts