Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - Anubis__

#1
Scripting / Control + C en ShellScript
28 Julio 2008, 14:40 PM
Buenas,

Es el primer mensaje que escribo por aqui y no sabia muy bien si iba aqui o no, pero como es script...Si os gsuta mas en otro lado, lo moveis!.

Pues vereis, el problema que tengo es que el otro dia hice un programa muy simple para automatizar el envio de emails con netcat, pide nombre de archivo, destinatario, remite, asunto y mensaje en si, vamos, algo muy sencillito.
Mi problema es que cuando se ejecuta el netcat y se envia el mensaje se queda "esperando", no hace nada hasta que pulso "control + C" que ya pone lo enviado/recibido, saliendo y aparece el "prompt".

Esto en principio no seria un problema, pero si quisiera enviar mas de un email a la vez, pongo un bucle for y la ejecucion se detiene en el primer envio, y al pulsar control C se detiene toda la ejecucion...Asi que la pregunta es..¿Que comando podria escribir para que cerrase la conexion pero volviese a ejecutar los bucles que le falten"? Por aqui os dejo el codigo a ver si cambiariais algo y demas, como vereis es muy rudimentario, no sabia nada de SC ya que vengo de un poquito de Pascal, asi que poco a poco!!

#!/bin/bash


echo ¿Que nombre quieres dar al email?
read "nombre"

if test -r $nombre
then $nombre | nc -vv -w 3 127.0.0.1 25
else

touch $nombre

echo ¿Con que email quieres mandarlo?
read "email"

echo ¿a quien quieres enviarselo?
read "enviar"

echo ¿Cual es el asunto?
read "asunto"

echo ¿cual es el mensaje?
read "mensaje"

echo ¿cuantas veces quieres mandarlo?
read "veces"

echo "helo GodsEye@GodsHand.org" >> $nombre
echo "mail from: $email" >> $nombre
echo "rcpt to: $enviar" >> $nombre
echo "data"  >> $nombre
echo "From: $email" >> $nombre
echo "To: $enviar" >> $nombre
echo "Subject: $asunto" >> $nombre
echo "$mensaje" >> $nombre
echo "." >> $nombre


for cont in $(seq "$veces")
do
cat $nombre | nc -vv -w 3 127.0.0.1 25
done


fi



echo ""
echo "############# Mensaje enviado ##############"
echo "############# Pulsa control+C ##############"
echo ""


[Actualizado] He reescrito la parte del bucle y ahora si funciona, pero estamos en las mismas, para que salte de uno a otro hay que pulsar control + c y poniendo kill, o kill -l se ejecuta una vez y sale, lo cual, no entiendo!.

Y ya he visto que en "linux" hay un apartado para shellscript, siento el fallo y espero que algun moderador me lo mueva cuando lo vea!

Gracias por adelantado.

[Actualizado] Me autocontesto a mi mismo, resulta que era mucho mas sencillo que hacer un kill, simplemente con cerrar la ejecucion de netcat (-c) la cosa continuaba "optimamente".
Asi que nada, gracias a los que se tomaron la molestia de leerlo.