Difference between revisions of "Cups y smbclient"
(una froga) |
(No difference)
|
Revision as of 06:35, 7 November 2017
RECORDATORIO
Esto es el típico recordatorio, una anotación en un papel que siempre extravías.
Fuera de su contexto puede no tener ningún sentido.
22/05/2015
Contents
Imprimir vía smbclient
Las opciones que nos proporciona Cups para imprimir en windows, suelen pasar por utilizar "smbspool", un proceso que puede no cubrir nuestras expectativas.
En nuestro caso necesitamos configurar la impresora con unas credenciales en un fichero, por lo que nos interesa utilizar smbclient.
El fichero de credenciales
Es el fichero donde almacenaremos el dominio, usuario y password para utilizar la impresión. Lo ubicaremos, con el siguiente formato, en:
/etc/samba/printing.auth
domain=DOMINIO username=Usuario password=Password
Comprobar que el fichero de credenciales funciona
Podemos usar smbclient para comprobar que el fichero de credenciales funciona correctamente. Si disponemos de una plantilla de de impresión en formato ps, test.ps, podemos incluso comprobar que la impresora funciona correctamente.
$ smbclient -A /etc/samba/printing.auth //MiServidorDeColas.DOMNIO/ColaDeImpresión
Domain=[DOMiNIO] OS=[Windows Server 2003 3790 Service Pack 2] Server=[Windows Server 2003 5.2] smb: \> print test.ps printing file test.ps as test.ps 23456 bytes printed
El backend de Cups para smbclient
Generamos el script que va a actuar como backend de Cups. Lo ubicaremos en:
/usr/lib/cups/backend/smbc
#!/bin/sh if [ "$1" = "" ]; then # list supported output types echo 'network smbc "Unknown" "Windows Printer using smbclient"' exit 0 fi job="$1" account="$2" title="$3" numcopies="$4" options="$5" filename="$6" if [ "$filename" = "" ]; then filename=- fi # strip protocol from printer printer=`echo "${DEVICE_URI}" | sed 's/^.*://'` # and print using smbclient echo "NOTICE: smbclient -N -A /etc/samba/printing.auth -c \"print ${filename}\" \"${printer}\"" 1>&2 errtxt=`smbclient -N -A /etc/samba/printing.auth -c "print ${filename}" "${printer}" 2>&1` ret=${?} # # Handle errors # see backend(7) for error codes # log message if [ "$ret" = "0" ]; then echo "$errtxt" | sed 's/^/NOTICE: /' 1>&2 else echo "$errtxt" | sed 's/^/ERROR: /' 1>&2 fi # "NT_STATUS_LOGON_FAILURE" -> CUPS_BACKEND_AUTH_REQUIRED echo "$errtxt" | grep -i 'LOGON_FAILURE' >/dev/null && return 2 # "Unable to open credentials file!" -> CUPS_BACKEND_AUTH_REQUIRED echo "$errtxt" | grep -i 'credentials' >/dev/null && return 2 # "NT_STATUS_BAD_NETWORK_NAME" -> CUPS_BACKEND_STOP echo "$errtxt" | grep -i 'BAD_NETWORK_NAME' >/dev/null && return 4 # something went wrong, don't know what -> CUPS_BACKEND_FAILED [ "$ret" != "0" ] && return 1 # success! -> CUPS_BACKEND_OK return 0
Y le ponemos los permisos adecuados:
chown root:root /usr/lib/cups/backend/smbc chmod u=rwx,go=r /usr/lib/cups/backend/smbc
Configurar Cups
Ahora solo nos falta configurar cups. Cuando añadamos impresora, hay que seleccionar Windows Printer using smbclient, y configurar los datos de la impresora, quedando algo parecido a:
smbc://MiServidorDeColas.DOMNIO/ColaDeImpresión