Hoy llama por teléfono un usuario diciendo que no podía conectarse a un arcaico (pero lamentablemente aún en uso) sistema de gestión. Este sistema es un viejo SCO OpenServer, una versión de código cerrado de Unix desarrollada por SCO (Santa Cruz Operation) en la década de los 90, empresa que presentó la quiebra y finalmente desapareció en 2011. El servidor corrió en hardware dedicado hasta hace algunos años, cuando fue virtualizado utilizando un procedimiento ad-hoc sobre la plataforma VMware.



Luego de comunicarle al usuario que me encargaría de resolver el inconveniente, me dispuse a abrir la consola del sistema. Al acceder a la misma inmediatamente me topé con el siguiente mensaje de error:

ip_output: TCP/IP Not licensed.

Junto con otros errores de servicios de red como NFS. Era claro que la red había dejado de funcionar.

El primer mensaje de error indicaba que el stack TCP/IP no tenía licencia (WTF!?). Por ende se me ocurrió revisar la licencia instalada en el servidor, para tratar de dilucidar si habría algún problema con la misma. Para ello es necesario acceder al gestor de licencias (License Manager) desde la herramienta scoadmin. Al ejecutar esta acción me encontré con la siguiente sorpresa:

Jejeje, la licencia del sistema operativo había expirado luego de más de 20 años en funcionamiento. Del hecho se desprenden varias reflexiones:

  • Primero, esto es lo que pasa cuando se utiliza software propietario, ajo y agua.
  • Segundo, qué simpáticas prácticas de licenciamiento tenían por aquellas épocas: dejar al servidor fuera de línea al expirar la misma. Prácticamente un DoS extorsivo.
  • Pero lo más interesante es que no hay a quién comprar una nueva licencia, pues la empresa detrás del "producto" dejó de existir hace ya varios años.
  • Cuarto, ¿qué carajo hace un sistema de más de 20 años prestando servicios cuando se ha desarrollado, y está en funcionamiento, un sistema moderno y actualizado que cumple la misma función y de forma más eficiente? La respuesta es simple: porque los usuarios finales se niegan a migrar los datos desde el sistema viejo al nuevo (hay una larga lista de razones por las cuales un usuario final tiene la potestad de negarse a utilizar un sistema por el que se ha invertido una buena cantidad de tiempo y dinero, pero no va a al caso de este artículo).

La cuestión es que, cuando uno utiliza software propietario, hay una alta posibilidad de en algún momento quedar cautivo de una empresa. Y peor aún, esa empresa podría ya no existir. El peor de los escenarios.

Como sea, la raíz del problema era simple: la licencia había expirado y la empresa que la proveía ha dejado de existir, y vos, Sysadmin tipo "fuck you! haha".

(Jejeje no puedo evitar reírme, estas son las situaciones más divertidas en la vida de un Sysadmin)

En Internet existen muchas licencias disponibles, pero como (lamentablemente) existe en la organización otro servidor SCO similar con su licencia en funcionamiento, decidí tratar de recuperarla e instalarla en el servidor en problemas. Investigando descubrí que la licencia de SCO OpenServer se guarda en el archivo /var/adm/ISL/iqm_file, (¡en texto plano!). Dentro de este archivo, la variable IQM_SERIAL_NUMBER almacena el número de serie de la licencia, la variable IQM_ACTIVATION_KEY almacena la clave de activación y la variable ANNOTATION_LINE guarda el contenido de la cadena "License Data".

Luego de recuperar estos datos desde el servidor en funcionamiento, logré instalar la licencia (desde el gestor de licencias) sin éxito, pues esta figuraba como expirada de todas formas. Concluí que la fecha de expiración de la licencia debería estar almacenada en otro archivo, tal vez relacionada con la fecha de instalación del servidor.

En definitiva, la solución a implementar fue cambiar la fecha del servidor (pues esto no afectaba al correcto funcionamiento de los servicios que provee). Una hackeada de lo más simple. Adicionalmente agregué una tarea en el cron de root para resetear la fecha una vez al mes:

sco: / # crontab -e
0 0 1 * * date 01010015

Conclusión: no usar software propietario de código cerrado. ¡Richard Stallman tenía razón!


Tal vez pueda interesarte


Compartí este artículo