Archive for September, 2007

Poner en pausa los trabajos de impresión en el servidor

Tener un servidor de impresión en una instalación con varias computadoras ayuda a controlar lo que se envía y a aprovechar las impresoras entre todos los equipos. En el caso de los laboratorios es necesario contener los trabajos de impresión hasta que el usuario que lo envió solicite que se le de paso, de este modo se minimiza el desperdicio y sólo se permite la impresión de aquellos trabajos que hayan sido pagados.

En el sistema Mac OS X Server 10.2 existe una opción para las filas de impresión en la que todos los trabajos que se reciben quedan automáticamente en pausa, de esta manera sólo la persona encargada del servicio puede liberar aquellos que se vayan solicitando.

Cuando salió el Mac OS X Server 10.3 el programa para administrar el servidor fue mejorado en su facilidad de uso y la interfaz se consolidó en una sola ventana (eso si, con muchas secciones). Lo que se ganó en esos aspectos se perdió en algunas opciones de configuración, entre ellas, la de poner los trabajos de impresión en pausa en cuanto llegan.

El no contar con esa opción, sumado a la prisa para terminar la instalación de los laboratorios antes de iniciar el semestre, impidió que se migrara a la nueva versión, por lo que la 10.2 continúa trabajando razonablemente bien a pesar de que ya han pasado 6 años desde que se instaló por primera vez.

El día le está llegando al servidor para ser reemplazado por una máquina un poco más nueva, sin embargo, las opciones que se están considerando para reemplazarlo no van a funcionar con la misma versión de sistema con el que contamos ahorita, va a ser necesario actualizar también esa parte.

Resulta que la versión del Mac OS X Server 10.4 utiliza la misma interfaz que su predecesor y aunque ofrece algunas opciones de configuración adicionales, tampoco cuenta con la “pausa automática”. ¿Qué hacer?.

Pues por fin se me ocurrió echarme un recorrido por el sistema sobre el cual funciona el servicio de impresión, que el el CUPS. Este sistema es en realidad toda una colección de programas que controlan la configuración de las impresoras, las filas de impresión y la administración de los trabajos que se envían a éstas. Algunos de los programas clave para conseguir lo que necesito son:

lp o lpr
y lpoptions

Todos estos programas tienen un montón de opciones razonablemente bien explicadas en el manual, pero la opción clave es para el comando lpoptions, lo que resulta en una línea como la que sigue:

lpoptions -d NombreFilaDeImpresion -o job-hold-until=indefinite

Como precaución ejecuté este programa como super-usuario para que el ajuste fuera para todos los usuarios de la computadora. Probablemente eso no sea necesario pero de todas maneras así lo hice (ese pequeño detalle no aparece por ningún lado en el manual).

¿El resultado?, pues una lista creciente de trabajos en la fila de impresión, y no un casi imperceptible parpadeo causado por algún trabajo que pasaba por ahí en su camino a la impresora.

Supongo que también funciona en el Mac OS X Server 10.3, pero al menos en el 10.4 si lo hace… y si acaso lograra obtener el Mac OS X Server 10.5 es probable que también funcione, ya que la base que hace funcionar al servidor de impresión es el CUPS en las tres versiones.

Comments (1)

Problemas con Acrobat

El programa “Adobe Acrobat” es desde hace tiempo una herramienta básica para cualquier diseñador y en general, para cualquier persona, ya que los archivos que se generan mediante éste pueden ser visualizados en prácticamente cualquier computadora, siempre y cuando tenga instalada una copia de “Acrobat Reader”.

Sin embargo no siempre las cosas son fáciles con la mencionada aplicación. Resulta que en una instalación común, en la cual el usuario que utiliza la computadora es el administrador del equipo, el programa trabaja prácticamente sin problemas y rara vez sucede algo que nos haga enojar con él. Muy diferente la experiencia cuando el usuario no tiene privilegios de administración.

Cada vez que la aplicación abre, de inmediato hace una revisión de los componentes instalados en el equipo y tratará de actualizarlos; si el usuario tiene privilegios de administración uno no se entera de lo que sucede, ya que la operación se efectúa sin nuestra intervención, pero cuando no se cuenta con esos privilegios el programa va a solicitar el nombre y contraseña del administrador, lo que interrumpe el flujo de trabajo y es una molestia cuando tal situación ocurre en un laboratorio completo y justo a la mitad de una clase.

Se podría suponer que la primera vez que se instala el equipo se pudiera abrir el programa dentro de la sesión de un usuario no administrador, entrar el nombre y contraseña en cuanto fuera solicitado y ya, que en adelante no va a ocurrir, pero no. Cuando múltiples usuario pueden utilizar la misma computadora tal situación se tendrá que repetir con cada uno, y si se tienen algunos cientos de ellos, la tarea es horrible. Por si lo anterior no fuera suficiente el famoso “Acrobat” no se conforma con hacer su revisión una vez, como ya lo mencioné realiza esa operación en cada ocasión que se abre.

¿Qué hacer para evitar que cada ocasión que alguien quiere abrir el programa se le presente la ventana de autenticación?

Afortunadamente alguien se topó con la solución y depués fue confirmada por “Adobe”, es necesario decirle al programa que no se “autorepare”. Para ello hay dos opciones, la primera implica visitar cada computadora y hacer el ajuste que corresponde, lo cual puede resultar engorroso y lento; la otra opción es editar las preferencias en una computadora y copiar el archivo a todas las demás.

Lo interesante de esta última opción es que puede funcionar para cualquier versión de Acrobat, tanto el Reader como el completo (stándar y profesional), funciona en la versión 7 y también en la 8.

El archivo que es necesario localizar se encuentra dentro del paquete de la aplicación y se llama “SHInit.xml“:

/Applications/Adobe Acrobat XXX/Acrobat XXX.app/Contents/MacOS/SHInit.xml

Al abrir el archivo con un editor de texto (ej. TextWrangler) se podrá localizar una linea que dice:

El Acrobat Reader 8:

<key>selfhealingfilename</key><string>RdrENU80SelfHeal.xml</string>

En Acrobat 7 standard:

<key>selfhealingfilename</key><string>AcroENUStdSelfHeal.xml</string>

En Acrobat 8 professional:

<key>selfhealingfilename</key><string>AcroISDPro80SelfHeal.xml</string>

Basta con eliminar esa línea (o comentarla) para que ya no se realice la “autoreparación“.

¿Y para hacer el cambio en muchas computadoras?, aquí interviene el Apple Remote Desktop y su función de copia de archivos, con esa ayuda se puede hacer toda la operación en 5 minutos o menos.

Comments

Login masivo con ARD [continuación]

Hace un tiempo escribí sobre una manera de hacer un login masivo en todo el laboratorio utilizando un comando del Apple Remote Desktop y enviando una serie de instrucciones de AppleScript.

Pues resulta que esas instrucciones no funcionan en todos los casos, incluso es posible que la versión del sistema operativo para las computadoras Intel de plano no haga caso.

Esas observaciones las hace Nathan Fisher en su correo enviado el 1 de septiembre a la lista “Remote Desktop”. Menciona que precisamente en la versión Intel del sistema la tecla de retorno es ignorada (tal vez sea una opción de seguridad), pero que en la versión PowerPC no.

Para contrarrestar lo anterior él propone activar el acceso completo del teclado antes de intentar enviar cualquier “teclazo” a la Ventana de Login. De esta manera se puede simular mejor la escritura y se tiene más control sobre los elementos de la interfaz. Hecho lo anterior se envian las órdenes de tecleo a la ventana y finalmente se desactiva la opción de acceso completo.

En caso que no funcione al primer intento, se puede hacer una segunda ocasión y, al menos en sus pruebas, le ha funcionado adecuadamente.

El script completo se lista a continuación, pero para motivos de presentación se muestra como una serie de comandos individuales en su propio renglón, en realidad esto se debe de colocar como un solo gran renglón:

line_01='set logInUser to "admin"';
line_02='set logInPassword to "donoharm"';
line_03='tell application "System Events"';
line_04='tell application process "loginwindow"';
line_05='key code 53';
line_06='delay 1';
line_07='key code 125';
line_08='delay 1';
line_09='key code 36 using option down';
line_10='delay 1';
line_11='keystroke tab';
line_12='delay 1';
line_13='key code 117';
line_14='delay .5';
line_15='keystroke tab';
line_16='delay .5';
line_17='key code 117';
line_18='keystroke return';
line_19='delay 1';
line_20='keystroke tab';
line_21='delay .2';
line_22='repeat with aChar in characters of logInUser';
line_23='keystroke aChar';
line_24='delay 0.2';
line_25='end repeat';
line_26='keystroke tab';
line_27='delay .5';
line_28='repeat with aChar in characters of logInPassword';
line_29='keystroke aChar';
line_30='delay 0.2';
line_31='end repeat';
line_32='key code 98 using control down';
line_33='delay 0.2';
line_34='keystroke return';
line_35='end tell';
line_36='end tell';
value=$(osascript -e "$line_01" -e "$line_02" -e "$line_03" -e "$line_04" -e "$line_05" -e "$line_06" -e "$line_07" -e "$line_08" -e "$line_09" -e "$line_10" -e "$line_11" -e "$line_12" -e "$line_13" -e "$line_14" -e "$line_15" -e "$line_16" -e "$line_17" -e "$line_18" -e "$line_19" -e "$line_20" -e "$line_21" -e "$line_22" -e "$line_23" -e "$line_24" -e "$line_25" -e "$line_26" -e "$line_27" -e "$line_28" -e "$line_29" -e "$line_30" -e "$line_31" -e "$line_32" -e "$line_33" -e "$line_34" -e "$line_35" -e "$line_36") # 53=escape,125=down,117=delete

Comments