Linux en Espanol
 
Problema con Bash/script (tema #24258)
Publicar nuevo tema  Responder al tema    Foros de discusión -> Programación
Autor Mensaje
walex
Forista


Registrado: 2012-02-01
Mensajes: 2

Publicado: 2012-02-02 11:22:25    Asunto: Problema con Bash/script

Hola a tod@s

Tengo un peque?o problemita y no se por donde cojerlo, tengo el siguiente script para crear trafico:

[code:1:c96a00d77b]
#!/bin/bash

# Este es un script para generar trafico
# $1 es el primer parametro que pasamos al script, en nuestro caso la IP a la cual le vamos a generar el trafico


#

if (($#==0)); then
echo "Debe ingresar una IP o URL a la que va a generar tr?fico... "
exit -1
fi

clear

select ACCION in "Generar Tr?fico" "Matar Procesos" Salir
do
case $ACCION in
"Generar Tr?fico")
echo "Generando Tr?fico"
for X in $(seq 1 50)
do
ping -s2048 $1 > /dev/null &
done
;;

"Matar Procesos")
echo "Matando Tareas"
for PROCESO in $(ps -a | grep ping | cut -c 2-5)
do
# echo "Matando procesos PING $fichero"
kill $PROCESO
done

echo
echo "Trabajo finalizado...."
;;

"Salir")
echo "Adios!!"
break
;;

*)
echo "Seleccione la opcion correcta"
;;
esac
done

[/code:1:c96a00d77b]

el script lo que hace es generarme trafico a una ip o url determinada mediante pines enviando paquetes de unos 2048 bytes.Durante todo el tiempo que yo quiera hasta seleccionar la opcion 2 que mata todos los procesos ping generados.

Hasta aqui todo Ok.

El problema es que, sin salir del script, ejecutando la primera opcion, luego la segunda y por ultimo la tercera, en pantalla me muestra esto:



[code:1:c96a00d77b]
....
trafico.sh: l?nea 49: 3113 Terminado ping -s2048 $1 > /dev/null
trafico.sh: l?nea 49: 3114 Terminado ping -s2048 $1 > /dev/null
trafico.sh: l?nea 49: 3115 Terminado ping -s2048 $1 > /dev/null
trafico.sh: l?nea 49: 3116 Terminado ping -s2048 $1 > /dev/null

.........
[/code:1:c96a00d77b]

el funcionamiento en si es correcto pero no entiendo el porque me muestra eso...
Solo sale si no salimos del script y ejecutamos las tres opciones una a una

Si por ejemplo entro y ejecuto la primera opcion y luego la 3 (Salir), esto no pasa, y si luego vuelvo ejecutar el script y ejecuto la segunda opcion y luego salir, tampoco pasa nada. Solo me muestra esto al ejecutar las tres opciones en su orden...

Alguna sujerencia?

Desde luego muchas gracias
RAGNAROK
Forista


Registrado: 2006-01-30
Mensajes: 434

Publicado: 2012-02-02 16:32:44    Asunto:

Lo que necesitas es cerrar el script no un bucle, por lo que [b:ce291205f4]break [/b:ce291205f4] en la opci?n salir es el error, cambialo por [b:ce291205f4]exit[/b:ce291205f4]

[code:1:ce291205f4] "Salir")
echo "Adios!!"
exit
;; [/code:1:ce291205f4]

Por cierto, escribiste tu el script? Entiendes bien lo que hace?
[quote:ce291205f4]Si por ejemplo entro y ejecuto la primera opcion y luego la 3 (Salir), esto no pasa, y si luego vuelvo ejecutar el script y ejecuto la segunda opcion y luego salir, tampoco pasa nada. Solo me muestra esto al ejecutar las tres opciones en su orden... [/quote:ce291205f4]

Evidentemente si ejecutas la 1 y la 3 no tendras el problema pues el mensaje que se te repite es la salida del comando kill y si no llamas a la opcion 2, entonces no llamas a kill.

Si ejecutas la 2 y la 3 tampoco tienes error pues llamas a kill, pero sin procesos que matar.



Salu2
walex
Forista


Registrado: 2012-02-01
Mensajes: 2

Publicado: 2012-02-05 20:35:10    Asunto:

RAGNAROK, Gracias por la respuesta
A tu pregunta
[quote:e37097a46f]Por cierto, escribiste tu el script? Entiendes bien lo que hace?[/quote:e37097a46f]
Pues si, yo lo he hecho , no soy un experto, pero intento satisfacer mis problemas y creo haberlo logrado, por lo menos me genera trafico que es lo que queria, y creo entender bien lo que hace ya que yo lo he hecho, pero como soy novato me falto interpretar bien el uso del exit o break

Por lo pronto gracias amigo





La marca registrada Linux (R) se usa siguiendo la sublicensia obtenida del "Linux Mark Institute",
el LICENCIATARIO exclusivo de Linus Torvalds, propietario de la marca en EEUU y otros países
The registered trademark Linux (R) is used pursuant to a sublicense from the Linux Mark Institute,
the exclusive LICENSEE of Linus Torvalds, owner of the mark in the U.S. and other countries