"Después del juego es antes del juego"
Sepp Herberger

Mostrando entradas con la etiqueta script. Mostrar todas las entradas
Mostrando entradas con la etiqueta script. Mostrar todas las entradas

viernes, 20 de enero de 2023

Lanzar un test de impresión desde un script

De vez en cuando aparece alguien quejándose de que una impresora "no imprime nada" y te ves obligado a ir hasta un puesto que tenga configurada la impresora y hacer una prueba por ti mismo, imprimiendo una página de prueba desde CUPS o una aplicación de escritorio (para descubrir muchas veces que la impresora funciona OK y era realmente un problema del usuario). Para librarme de ese engorro tengo un script que permite imprimir un test desde una conexión ssh. El script en cuestión es:
# cat test-printer.sh

#!/bin/bash
ruta=$(dirname "$0")
if [ "$#" -ne 2 ]
then
    echo "Uso: $(basename $0) <impresora> <bn|color>"
    echo "Impresoras disponibles el sistema:"
    lpstat -p | awk '{ print $3}'
else
    impresora="$1"
    case "$2" in
        "color" )fichero="${ruta}/TestPrinterColor.pdf"  
                 ;;
        "bn" )fichero="${ruta}/TestPrinterBN.pdf"
                 ;;
        *) echo "Error en segundo parámetro"
           exit 1
           ;;
    esac
    lp -d "$impresora" "$fichero" || echo "Error: revise la cola de impresión"
fi
exit 0
El script es muy básico: recibe como primer parámetro un nombre de impresora y como segundo una cadena "bn" o "color", para lanzar una prueba con un documento en blanco y negro o un documento en color. Si lo ejecutamos sin parámetros nos listará los nombres de las impresoras configuradas en el PC donde ejecutamos el script, que son aquellas con las que podremos lanzar el test.

Lo único que necesitamos es crear 2 ficheros pdf a nuestro gusto para los tests en blanco/negro y color, dejándolos en el mismo directorio en que está el script. Estos 3 ficheros los podemos poner en una ruta de red accesible desde cualquier máquina o bien los copiaremos a los PC desde donde queramos hacer las pruebas. Luego, ante un problema bastará entrar por ssh y hacer:
# ./test-printer.sh IMPRESORA_DPTO_12 color
Out!

lunes, 10 de septiembre de 2018

Ejecutar un script que necesita conexión de red al apagar la máquina en Ubuntu 18

Ya estamos de vuelta del veranito con las pilas cargadas, vamos al lío: me interesa ejecutar un script cuando las máquinas estén apagándose o reiniciándose pero es importante que durante la ejecución del mismo todavía hubiera red, ya que el script hace conexiones hacia fuera.

Anteriormente con init.d esto lo hacíamos poniendo el script en /etc/rc6.d, pero con Ubuntu 18 y systemd eso se ha acabado. Ahora debemos hacerlo creando un servicio:
# cat /etc/systemd/system/apagado.service 
[Unit]
Description=Script para ejecutar en apagado
Requires=network.target
After=network.target
Before=shutdown.target reboot.target halt.target
DefaultDependencies=no

[Service]
Type=oneshot
RemainAfterExit=true
ExecStop=/bin/bash /root/apagado.sh

[Install]
WantedBy=multi-user.target
Los parámetros Requires/After/Before establecen las dependencias y precedencias con las que se ejecutará el script /root/apagado.sh, que es donde tenemos nuestro código.

Una vez definido el servicio lo activamos con:
# systemctl enable apagado.service
Después reiniciamos la máquina y a partir de ahora el script /root/apagado.sh se ejecutará en cada shutdown/reboot.