Script [RESOLVIDO]

1. Script [RESOLVIDO]

Fabio Rodrigues de Oliveira
defabio

(usa Ubuntu)

Enviado em 28/09/2012 - 12:19h

Olá,

Fiz um simples script para checar um ip e salvar os logs


#!/bin/bash

while true; do
if ping 172.17.2.4 2>&1 >/dev/null;then
echo "MICRO OK `date`" >>/var/log/logping; else
echo "MICRO FORA DA REDE`date`" >>/var/log/logping;fi
done
sleep 1

quando vou startar o scripr fica com
/etc/ini.t/ping start e dou um enter executa o script mas nao libera o prompt e tbm não atualiza o arquivo de log, só quando digito crtl c para finalizar o script é que o arquivo de log atualiza, oq por estar errado?



  


2. Re: Script [RESOLVIDO]

João Paulo Carneiro
jptudobem

(usa Debian)

Enviado em 28/09/2012 - 12:56h

defabio escreveu:

Olá,

Fiz um simples script para checar um ip e salvar os logs


#!/bin/bash

while true; do
if ping 172.17.2.4 2>&1 >/dev/null;then
echo "MICRO OK `date`" >>/var/log/logping; else
echo "MICRO FORA DA REDE`date`" >>/var/log/logping;fi
done
sleep 1

quando vou startar o scripr fica com
/etc/ini.t/ping start e dou um enter executa o script mas nao libera o prompt e tbm não atualiza o arquivo de log, só quando digito crtl c para finalizar o script é que o arquivo de log atualiza, oq por estar errado?



Primeiro vamos organizar esse script seu ai:


#!/bin/bash

while true; do
ping -c 3 -W 1 172.17.2.4 >/dev/null
VARAUX=$?
if [ $VARAUX -ne 0 ]; then
echo "`date` - MICRO FORA DA REDE" >> /var/log/logping
fi
sleep 5
done


OBS0: Não há necessidade de você escrever em log que o host está online, isso vai gerar um log gigante. A intenção não é saber se ele está offline? Então, grave no log apenas quando ele ficar offline. Lógico.

OBS1: Repare que adicionei os parametros -c e -W no comando PING. Seu script só escreve nos logs depois do CTRL + C porque o comando ping sem parametro é infinito, ou seja, seu script parava no PING. Quando executou o CTRL + C, você não parou o script, mas sim a execução do PING, prosseguindo com o script e consequentimente escrevendo nos logs.

OBS2: Por estar usando um looping infinito, para não travar o terminal, o script tem que ser executado em background.

# ./script.sh &

OBS3: Se você quiser passar o parametro "start", você tem que configurar o script para aceitar condição de seleção "case".

Para rodar com o start tem que ser:


#!/bin/bash

_PID=$$

start() {
while true; do
ping -c 3 -W 1 172.17.2.4 >/dev/null
VARAUX=$?
if [ $VARAUX -ne 0 ]; then
echo "`date` - MICRO FORA DA REDE" >> /var/log/logping
fi
sleep 5
done
}

stop() {
kill -9 $_PID
}

case "$1" in
start)
start
;;
stop)
stop
;;
*)
echo "Use: {start|stop}"
exit 1
;;
esac
exit 0



3. Re: Script [RESOLVIDO]

Fabio Rodrigues de Oliveira
defabio

(usa Ubuntu)

Enviado em 29/09/2012 - 10:35h

Valew, era isso mesmo que precisava, obrigado pela ajuda!






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts