(Solucionado) Problema con un Script

Imagen de laura.quintero
0 puntos

Muy buenas tardes

tengo un pequeño problema y necesito que me ayuden a encontrar el error.

eh creado el siguiente script llamado snort.conf para poder arrancar Snort

y me sale este mensaje:

/etc/init.d/snort: línea 216: EOF inesperado mientras se buscaba un `"' coincidente
/etc/init.d/snort: línea 224: error sintáctico: no se esperaba el final del fichero
root@administrador:~#

y este es el script:

IFACE="eth0"

# To Add hosts you wish to ignore to a "white list,
# Add them into to "WHITESLIST"
# Be sure separate each ip address by a space
# Example WHITELIST='192.168.1.1 192.168.1.2'
# WHITELIST="

# The following section formats the $WHITELIST into proper syntax for snort
if [-z "WHITELIST"]; then
HOST="
else
c='1'
for i in $WHITELIST; do
if ["$c" = "1"; then
HOST= "host" "$i"
c='2'
else
HOST= ""$HOST" or host "$i""
fi
done
fi

# To start snort at boot, put:
#
# "/etc/init.d/snort boot"
#
# in /etc/rc.local(without quotes, abovee th line exit 0)

# Sanity checks

if [-z"$DISPLAY"] || [!-x"/usr/bin/zenity"];then
D="e"
else
D="z"
fi

uid=$(/usr/bin/id-u)
if [!"$uid"="0"] then
case "$D" in
e)
sudo bash $0 $@
exit 0
;;
z)
if[-x"/usr/bin/gksu"]; then
gksu "$0 $@
exit 0
else
kdesu "$0 $@
exit 0
fi
;;
esac
fi

# Declair variables
SNORT='/usr/local/bin/snort -c /etc/snort/snort.conf -u snort -g snort -D'
ZEN="usr/bin/zenity/"
ZENINF='$ZEN -width=700 -title "Bodhis snort script"-info -text'
ZENWARN='ZEN -width=700 -title "Bodhis snort script"-warning -text'
ZENMSG="'$TXT'"
PID='pidof snort'

# Set prompt colors
RED='\e[0;31m'
GREEN='\e[0;32m'
BLUE='\e[0;34m'
NC='e\0m' #No Color

# functions
zeninfo()
{
case"D"in
e)
echo -e $BLUE "${TXT}" $NC
;;
z)
eval $ZENINF $ZENMSG
;;
esac
}
zenwarn()
{
case"$D"in
e)
echo -e $RED"${TXT}"$NC
;;

z)
eval $ZENWARN $ZENMSG
;;
esac
}

start ()
{
#start snort
if [-z "$HOST"];then
$SNORT -i"$IFACE" &
else
$SNORT -i"$IFACE"not\('echo"$HOST"'\)&
fi

sleep 20
PID ='pidof snort'
if [!-z"$PID"]; then
if [!-z"$WHITELIST"];then
TXT="snort successfully started, using a Whitelist of "$WHITELIST""
else
TXT="Snort started successfully.."
fi
zeninfo &
exit 0
else
TXT="Snort failed to start.."
zenwarn &
exit 1
fi
}

stop()
{
if[!-z"$PID"];then
kill -9 ""$PID""
rm -f /var/run/snort_"${IFACE}"*
TXT="Snort stopped.."
zeninfo &
exit 0
else
TXT="Snort is no running..."
zenwarn &
exit 1
fi
}

restart()
{
if [!-z "$PID"];then
kill -9 "$PID"
rm-f /var/run/snort_"${IFACE}"*
fi
start
}

status()
{
if[!-z$PID];then
TXT="Snort is running..."
else
TXT="Snort is not running..."
fi
zeninfo &
}

case "$1" in

boot)
if[!-z"$PID"];then
exit 0
fi
if [-z "$HOST"];then
$SNORT -i"$IFACE" &
else
$SNORT -i"$IFACE" not (\'echo"$HOST"'\)&
fi
;;
start)
if [!-z"$PID"];then
TXT="Snort is alread running..."
zenwarn &
exit 1
else
start
fi
start
;;
stop)
stop
;;
restart|reload)
restart
;;
status)
status
;;
*)
TXT="Usage start|stop|restart|reload|status|boot"
zenwarn
exit 1
;;
esac

exit 0

Imagen de AgD
+1
0
-1

Pega el script al completo, incluida las cabeceras. Según el error que has pegado, el problema está en las líneas 216 y 224 pero lo que has pegado solo tiene 197 lineas. En cualquier caso, echando un vistazo por encima parece que te has comido los espacios en la mitad del comando test (los corchetes). Si después de separar correctamente la expresión de la cadena sigue dando error; postea el script al completo.

+1
0
-1

make install . es
Noticias, apuntes y pequeños tutoriales sobre GNU/Linux
Imagen de laura.quintero
+1
0
-1

gracias por darme una manito.

Bien eh estado mirando el script y no eh encontrado el error...
pegare todo el script... correcto?

Error:

root@administrador:/# nano /etc/init.d/snort
root@administrador:/# /etc/init.d/snort restart
/etc/init.d/snort: línea 211: EOF inesperado mientras se buscaba un `"' coincidente
/etc/init.d/snort: línea 217: error sintáctico: no se esperaba el final del fichero

Script:

#!/bin/bash

# This is a “simple” script written by xxxxxxx to start snort.
# This script is released under the GPL V3.
# Feel free to make modifications.
# If you modify or redistribute this script please give the courtesy of credit.

# This script requires zenity if you wish to run it in X.

# Test root and display

############################################################
### Configuration options ###
############################################################

# The following sections are used to configure snort
# Change “eth0? to the interface you wish to use with snort
#
IFACE="eth0"

# To Add hosts you wish to ignore to a “white list,
# Add them into the “WHITELIST”
# Be sure separate each ip address by a space
# Example WHITELIST=’192.168.1.1 192.168.1.2?
WHITELIST=""

# The following section formats the $WHITELIST into proper syntax for snort
if [ -z "$WHITELIST" ] ; then
HOST="
else
c="1"
for i in $WHITELIST; do
if [ "$c" = "1" ]; then
HOST="host "$i""
c=’"2"
else
HOST=""$HOST" or host "$i""
fi
done
fi

############################################################
#
# To start snort at boot, put :
#
# "/etc/init.d/snort boot"
#
# in /etc/rc.local (without quotes, above the line exit 0)
#
############################################################

# Sanity checks

if [ -z "$DISPLAY" ] || [ ! -x "/usr/bin/zenity" ]; then
D="e"
else
D="z"
fi

uid= $(/usr/bin/id -u)
if [ ! "$uid" = "0" ];then
case "$D" in
e) sudo bash $0 $@
exit 0
;;
z) if [ -x "/usr/bin/gksu" ];then
gksu "$0 $@"
exit 0
else
kdesu "$0 $@"
exit 0
fi
;;
esac
fi

# Check for stale lock files
if [ -z "$PID" ]; then
rm -f /var/run/snort_"${IFACE}"*
fi

# Declair variables
SNORT="/usr/local/bin/snort -c /etc/snort/snort.conf -u snort -g snort -D"
ZEN="/usr/bin/zenity"
ZENINF="$ZEN –width=700 –title "Bodhis snort script" –info –text"
ZENWARN="$ZEN –width=700 –title "Bodhis snort script" –warning –text"
ZENMSG=]""$TXT""
PID='pidof snort'

#Set prompt colors
RED='\e[0;31m'
GREEN='\e[0;32m'
BLUE='\e[0;34m'
NC='\e[0m' # No Color

# functions

zeninfo ()
{
case "$D" in
e) echo -e $BLUE"${TXT}" $NC
;;
z) eval $ZENINF $ZENMSG
;;
esac
}

zenwarn ()
{
case "$D" in
e) echo -e $RED"${TXT}" $NC
;;
z) eval $ZENWARN $ZENMSG
;;
esac
}

start ()
{
#start snort
if [ -z "$HOST" ];then
$SNORT -i "$IFACE" &
else
$SNORT -i "$IFACE" not \('echo “$HOST”'\)&
fi
# This sleep is necessary to allow snort to initialize.
# If you shorten it, snort may start, but fail.
# this sleep is skipped if you use the boot option
sleep 20
PID='pidof snort'
if [ ! -z "$PID" ]; then
if [ ! -z "$WHITELIST" ]; then
TXT="Snort successfully started, using a Whitelist of "$WHITELIST""
else
TXT="Snort started successfully …"
fi
zeninfo &
exit 0
else
TXT=”Snort failed to start …”
zenwarn &
exit 1
fi
}

stop ()
{
if [ ! -z "$PID" ]; then
kill -9 ""$PID""
rm -f /var/run/snort_"${IFACE}"*
TXT="Snort stopped …"
zeninfo &
exit 0
else
TXT="Snort is not running …"
zenwarn &
exit 1
fi
}

restart ()
{
if [ ! -z "$PID" ]; then
kill -9 "$PID"
rm -f /var/run/snort_"${IFACE}"*
fi
start
}
status ()
{
if [ ! -z $PID ] ; then
TXT="Snort is running …"
else
TXT="Snort is not running …"
fi
zeninfo &
}

case "$1" in
boot)
if [ ! -z "$PID" ]; then
mkdir -p "$PID"
exit 1
fi
if [ -z "$HOST" ];then
$SNORT -i "$IFACE" &
else
$SNORT -i "$IFACE" not \(echo "$HOST"\)&
fi
;;
start)
if [ ! -z "$PID" ]; then
TXT="Snort is already running …"
zenwarn &
exit 1
else
start
fi
;;
stop)
stop
;;
restart|reload)
restart
;;
status)
status
;;
*)
TXT="Usage start|stop|restart|reload|status|boot"
zenwarn &
exit 1
;;
esac
exit 0

+1
0
-1

Excelente Dia... gracias a Dios... :D

Imagen de AgD
+1
0
-1

No se porque, pero aun así no cuadra. El script que has pegado tiene 217 líneas pero tienes errores en la línea 224 :-? En cualquier caso he empezado a leerlo y esto es lo que he encontrado:

Linea 30
HOST="
Numero de comillas impar. Las comillas SIEMPRE van por pares, apertura y cierre.


Linea 34
if [ "$c" = "1" ]; then
Falta un espacio:
if [ "$c" = "1" ] ; then

Linea 36
c=’"2"
Numero de comillas impar. Las comillas SIEMPRE van por pares, apertura y cierre.
Linea 55
if [ -z "$DISPLAY" ] || [ ! -x "/usr/bin/zenity" ]; then
Uso incorrecto del operador lógico "o", faltan espacios. Posibles formas correctas:
if [[ -z "$DISPLAY" ]] || [[ ! -x "/usr/bin/zenity" ]] ; then
if [ -z "$DISPLAY" -o ! -x "/usr/bin/zenity" ] ; then
Linea 61
uid= $(/usr/bin/id -u)
Sobra un espacio
uid=$(/usr/bin/id -u)

Hasta aquí es donde he llegado, el resto te lo dejo a ti. Aunque ya te adelanto que los problemas son los mismos, espacios que faltan o sobran, mal uso de las comillas y errores sintácticos. Tal vez deberías de leer (¿releer?) un libro sobre programación shell.

+1
0
-1

make install . es
Noticias, apuntes y pequeños tutoriales sobre GNU/Linux
Imagen de laura.quintero
+1
0
-1

Muchas gracias por tu ayuda, efectivamene era eso :)

y tambien gracias por el consejo... lo tendre en cuenta y en cuanto pueda volvere a estudiar un poco sobre shell ;)...

Buena tarde

+1
0
-1

Excelente Dia... gracias a Dios... :D