Linux/Unix Shell Scripting - salida de comando

   
Vista:

salida de comando

Publicado por nuke (4 intervenciones) el 26/10/2011 23:02:01
Buenas noches.

Estoy intentando montar un script que compruebe si existe un servidor de dhcp no autorizado en la red.

Si detecta que un servidor no autorizado está sirviendo ip la salida del último comando 0
Si ningún servidor de dhcp excepto el autorizado sirve ip la salida del último comando es 1

Hasta aquí todo bien:

Mi servidor autorizado es 192.168.1.50

#!/bin/sh
log=/var/log/dhcp/dhcp_discover.log
warn=/var/log/dhcp/warn
exit=$(odhcploc -p 192.168.1.20 192.168.1.50)

echo $exit > $warn
echo $warn >> $log
cat $warn | grep OFFER
echo $?

Tengo que utilizar el grep para que me muestra la salida 1 o 2, porque el comando odhcploc hecho en c, no muestra salida de error, simplemente detecta o no un server no autorizado.

Con el grep recojo si me a servido una ip o no.

Ahora me encuentro con el problema.

Si la salida del grep es 0, es decir en el fichero /var/log/dhcp/warn encuentro la cadena OFFER quiero mostrar error para posteriormente enviar un correo.

if [ "$?" -ne "1"]; then
echo "ERROR"
else
echo "OK"
fi

a ver si me podeis hechar un cable no he conseguido hacer funcionar el condicional, no me tiene en cuenta la condición, he probado tanto -ne 0 como eq 0

Estoy un poco bloqueado con el condicional. Saludos y gracias por la ayuda
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

salida de comando

Publicado por Tom (253 intervenciones) el 28/10/2011 10:14:00
prueba:

1
2
3
4
5
grep OFFER $warn
ST=$?
if [ $ST -ne 0 ]
then
...

o, mejor:

1
2
3
4
FND=$(grep -c OFFER $warn)
if [ $FND -gt 0 ]
then
...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

salida de comando

Publicado por nuke (4 intervenciones) el 28/10/2011 17:24:48
Estuve probando con

if [ $ST -ne 0 ]

o if [ $ST -eq 0 ]

Pero no me tenía en cuenta la condición supongo por la salida del comando

Gracias por contestar Tom

al final opté por comprobar si el fichero estaba vacío o el comando grababa sobre el fichero

# Conditions

if [ -s $warn ]; then
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar