[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

A ver qué os parece esto: poffwait



Saludosss a losss pingüinos del lado oscuro.

Pues que ocurre que mi madre me suele llamar a comer justo cuando me estoy
bajando la cantidad de mensajes que tengo pendiendes en el servidor de
noticias, y claro, o espero una eternidad (o nada, dependiendo del día) a
que se descargue todo, arriesgándome a que se me enfríe la comida, o mato
al pppd y me quedo con los mensajes a medio bajar.

Y claro, uno que tiene delirios de grandeza desde que goza de buena salud
y sistema operativo bueno, y va y se inventa el poffwait. Explico:

Me conecto como usuario normal (eso de root, mala cosa) usando pon, y me
desconecto con poff. Pero claro, poff es inmediato.

Pues me he hecho un script, que dependiendo de la existencia de un fichero
que se genera mediande el último script ejecutado de mi directorio
/etc/ppp/ip-up.d/, llama a poff, o sigue esperando la creación del
fichero.

La ventaja de esto es evidente: que me llama mi madre y todavía ni ha
empezado con el correo, pues nada, tecleo poffwait y me desentiendo de la
conexión, porque sé que mi linux y mi script no me van a fallar, dejándome
a la merced de los tiburones de Timofónica, y cuando vuelvo, leo el email,
hago la digestión, etc, etc.

Aquí va el script. Lo he creado como /usr/bin/poffwait, propiedad de root
y con grupo dip:

--- cortar por la línea, no por el monitor, jeje ---
#!/bin/sh

logger Poffwait activado: Se cerrará la conexión cuando los procesos actuales finalizen.
while echo e> /dev/null ; do
        sleep 2
        if test -e /online; then
                logger poffwait: La conexión existe. Procediendo a cortarla...
                poff
                exit 0
        fi
done
-------

Y obviamente, en el directorio /etc/ppp/ip-up.d/ tengo unos scripts con
nombres Snumprograma que se ejecutan y me bajan el correo, las noticias,
las páginas güeb, y el último (s99final) contiene:

---
#!/bin/sh

echo Procesos programados finalizados > /online
logger Procesos programados finalizados
---

Por supuesto, en el ip-down.d hay un respectivo script que elimina /online
para que el poffwait no se vuelva loco la siguiente vez que sea invocado.

Fale. Hasta ahí mi contribución. Seguro que no ha sido la única, y además
hay expertos aquí que ya lo hacian, ¿verdad? Pues ala, contádme si lo
hacéis así, asá, preferís otra forma de hacerlo, las
ventajas/inconvenientes de vuestro/mi sistema, etc.

Y otras cosas:

Tal y como está ahora el script, hay que llamarlo como poffwait & si se
quiere seguir haciendo algo mientras dure la conexión. Me gustaría que
poffwait se "metiese en segundo plano" automáticamente. La solución sería
hacer un poffwait con lo siguiente:

#!/bin/sh

exec realpoffwait &

teniendo el script anterior en el fichero realpoffwat. Pero, ¿hay algún
comando propio de shell o forma de hacer que un proceso "se vaya él
solito" al background sin dejar de funcionar? Porque sería interesante.
Además, así por ejemplo, se podría combinar, y hacer que el proceso sólo
se fuese al background después de mostrar un mensaje, o yo que sé qué.

Obviamente, veréis que es mi primer script de shell, y habrá algunas cosas
chorras. Por ejemplo, no sabía como hacer un while (1==1) de c, así que me
saqué el truco del echo www>/dev/null. ¿Hay alguna forma de hacerlo bien,
sin recurrir a comandos externos? ¿Existe el goto en bash/sh?

Y finalmente una pregunta semi-relacionada:

Al hacer un poff, se me corta la conexión y luego se ejecutan los scripts
que hay en /etc/ppp/ip-down.d/. ¿Cómo se puede hacer que PRIMERO se
ejecuten todos los scripts de desconexión, y luego se corte la
comunicación? Así por ejemplo, antes de desconectarme, miraría por última
vez el email, y mandaría el que hubiese escrito.

Y puestos a rizar el rizo: ¿sería posible sustituir poff por un similar a
shutdown que haceptase un parámetro, y fuese algo así?:

man poff(x)

   poff        - It runs the ip-down.d scripts, then kills pppd
   poff now    - Immediate pppd slaughter, but also runs script off-line
   poff wait   - Waits until scripts in ip-up.d have been run, then
                 disconnects. (implemented above)

SEE ALSO

   Multitet(4), Wotan (666), Killtab(12).

HISTORY

   Once upon a time, some jerk using one ppp line (yeah, as if the rest of
the world (aka usa) didn't have T1 free access) included these unuseful
parameters to the already useful poff script, which theoretically helped
other people of the old Europe to control their pay-per-la-cara-to-timo-
phonic-services big big BIG bills.

PD: Disculpad la evidente excitación antinatural en un ser de ultratumba
como yo => estoy de exámenes... (suerte a los que también los sufren).

Grzegorz Adam Hankiewicz - gradha@iname.com
Gogosoftware - http://welcome.to/gogosoftware/

Don't compare Linux with Windows. There's no colour (except blue).


Reply to: