Apagar el equipo automáticamente al terminar las descargas directas con Tucan


nullRecientemente ha salido una nueva versión del gestor de descarga directa Tucan.

Entre las novedades y mejoras que incluye la versión 0.3.9 se encuentra una que echaba especialmente de menos (también me gusta el soporte desde la linea de comandos o CLI) y no es otra que el apagado automático del equipo al finalizar las descargas que estuviesen programadas en la cola.

Aunque es fácil de hacer utilizando el comando shutdown requiere sacar la bola de cristal para adivinar el tiempo que tardará en finalizar (nada como contar con dicha funcionalidad de serie en el programa).

El problema es que en Linux no funciona correctamente y aquí quiero compartir cómo solucionarlo.

Modificando el código del programa

Resulta que tras probarlo tanto en Ubuntu 9.04 como en Debian Lenny encuentro que no funcionaba debido al uso incorrecto del comando shutdown.

Si observamos la línea 54 del fichero tucan-0.3.9/ui/gtk/shutdown.py observamos lo siguiente:

if subprocess.call([«sudo», «-n», «shutdown», «h», «now»], stdout=subprocess.PIPE, stderr=subprocess.PIPE) == 0:

cuando

  • ni sudo admite el parámetro -n
  • ni shutdown puede lanzarse sin poner delante del parámetro h un signo – (debería usarse como -h)

En definitiva, dicha línea 54 debe quedar del siguiente modo

if subprocess.call([«sudo», «shutdown», «-h», «now»], stdout=subprocess.PIPE, stderr=subprocess.PIPE) == 0:

Para aquellos que no quieran editar manualmente el código (y para el autor de Tucan) publico patch con los cambios realizados al fichero shutdown.py que puede ser utilizado tal y como explicamos en el artículo Crear y aplicar parches en Ubuntu Linux.

Explicando cómo habilitar el shutdown en Linux

Aunque en la web de Tucan explican someramente cómo hacerlo opto por describir el proceso para aquellos que no entiendan las explicaciones que ofrece el autor.

Tan sencillo como lanzar un

sudo visudo

y, al final del archivo añadir la línea

jasvazquez ALL=NOPASSWD: /sbin/shutdown

sustituyendo jasvazquez por vuestro nombre de usuario 😉

Yo personalmente he optado por incluirlo en la sección destinada para tal efecto en el archivo /etc/sudoers pero es cuestión de gustos 😉

null

Conclusión

A disfrutar de este fantástico programa (lo prefiero a otras alternativas como jDownloader por los pocos recursos que consume al no depender de la máquina virtual de Java).

Seguramente el fallo sera corregido en la próxima versión que publiquen (lo mismo hasta tienen en cuenta el parche que modestamente publico como solución ;)) pero, de momento, puede que le evite a más de uno algún que otro cabezazo (como los que me he dado yo).

8 comentarios en “Apagar el equipo automáticamente al terminar las descargas directas con Tucan

  1. Gracias por notificarlo. El problema se detectó a las pocas horas de salir la versión 0.3.9 y se solucionó ya en la versión de desarrollo, se puede ver con el comando:

    $ svn diff -c 1272 https://forja.rediris.es/svn/cusl3-tucan/

    Sin embargo al ser algo del «core» no estará disponible hasta la salida de la próxima versión. Ya nos hemos movido para que el problema no llegue a los paquetes oficiales de las distros.

    Si alguien quiere Tucan en paquete .deb (y sin este problema) lo puede descargar del repositorio SVN oficial:

    https://forja.rediris.es/svn/cusl3-tucan/trunk/packages/debian/tmp/tucan_0.3.9-1_all.deb

    Me gusta

  2. Respecto al parámetro «-n»: sudo si admite ese parámetro y sirve para lo siguiente (man sudo):

    -n The -n (non-interactive) option prevents sudo from prompting the user for a password. If a password is required for the command to run, sudo will display an error messages and exit.

    Me gusta

  3. Perdón, pero el problema no está resuelto del todo, para Debian y las basadas en RedHat se usa «su» en vez de «sudo».
    Así que habría que hace un nuevo if en el fichero y lo de sudo visudo no funciona, ¿cómo sería con «su»?
    Gracias

    Me gusta

    1. Yo uso también Debian Lenny (la distribución no debería influir si realmente es Linux) y con su lo que haces es convertirte en cualquier usuario (normalmente root).

      Si usas su deberás convertirte en root y LUEGO lanzar el comando shutdown pero no en la misma línea (de ahí que se recomiende el uso de sudo)

      Me gusta

  4. Pero sudo no viene instalado en Mandriva y habría que ponerlo como dependencia en el rpm, además aun instalándolo hay que configurarlo después para que funcione, y eso no es algo que esté al alcance de nuevos usuarios en Linux, por eso debería de poder existir en Tucan una línea para «su», vamos creo 😉

    Me gusta

    1. De todos modos @Cristobal ten en cuenta que el «estándar» es ceder derechos de administración a través de sudo (esté o no instalado en el sistema) en lugar de ofrecer a cualquier usuario la posibilidad de ser root.

      Siempre podrías optar por usar el setuid pero dar la clave de root a cualquiera considero que es una barbaridad, ¿no te parece?

      Un saludo

      Me gusta

Deja una respuesta

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Salir /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Salir /  Cambiar )

Conectando a %s

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.