Todos los Sistemas Operativos (S.O.) tienen una Shell para permitir un trabajo más técnico o avanzado sobre las múltiples funciones, opciones y capacidades del mismo. Y así como en "MS Windows", el equivalente serían los programas "command.com" o "cmd.exe" y actualmente el "Power Shell", en los S.O. Unix existen múltiples implementaciones de la Shell, dentro de 2 grandes grupos o familias de Shell conocidas como "Bourne Shell" y "C Shell", siendo los de esta última poco conocidos y usados.

Y mientras la Shell es el programa que permite a los usuarios interactuar con el Sistema Operativo a un nivel técnico más profundo, mediante el procesamiento de órdenes de texto en modo terminal, el Shell Scripting es un nivel superior del manejo de las implementaciones de la Shell (por ejemplo: Bash) para facilitarnos el manejo avanzado de las capacidades del S.O. y mejorar la automatización y la monitorización de tareas y procesos.

Shell Scripting: Imagen destacada

Introducción

El Shell Scripting como su nombre lo indica se realiza sobre una Shell. Una Shell suele suele traducirse al Español como CONCHA (coraza, cubierta, protección). Pero cuando este termino suele ser usado dentro de los S.O. se refiere al interprete de comandos del mismo. Por lo que básicamente una Shell es una interfaz de texto de altas prestaciones que se manifiesta en forma de Terminal (Consola) y que es utilizado esencialmente para las siguientes actividades:

  1. Gestionar el Sistema Operativo.
  2. Ejecutar aplicaciones e interactuar con ellas.
  3. Servir de entorno básico de programación dentro del Sistema Operativo.

Al día de hoy, todavía muchos de los sistemas operativos tipo GNU/Linux se administran más eficientemente editando sus ficheros configuración, vía terminal que a través de la Interfaz Grafica de Usuario (GUI). Los cuales como norma general, suelen encontrarse en la ruta de destino: "/etc", y dentro de sus respectivos directorios específicos de cada aplicación.

Shell Scripting: Imagen Introducción

Por ejemplo, el programa Lilo (que significa Linux Loader) se configura editando el archivo de texto ubicado y llamado como "/etc/lilo/lilo.conf". En el caso de los programas, estos se ejecutan escribiendo el nombre del ejecutable, si el mismo se encuentran en el path (ruta por defecto) para todos los ejecutables, como normalmente es "/usr/bin", o escribiendo el nombre del ejecutable precedido por "./" desde el directorio donde estén ubicados.

Estos tips de uso son bien conocidos por cualquier usuario de la Shell, sin embargo, las capacidades de la Shell como entorno de programación no son tan conocidas y apreciadas por todos. Y es en este punto donde los Script aparecen. Los Script son pequeños programas realizados en el Shell que no necesitan ser compilados. La Shell los interpreta linea a linea. Es decir, un Script es un archivo de automatización de tareas.

Esto hace que los Scripts suelan ser llamados como Shell Scripts, y puedan llegar ha realizar desde pequeñas y sencillas ordenes hasta grandes y avanzadas tareas o series de instrucciones de vital importancia dentro del propio S.O. En general, los Scripts cuentan con una sintaxis bastante limpia y clara que los vuelve un buen punto de inicio para iniciarse en el mundo de la programación.

Content PC Shell Scripting: Imagen de Contenido

Contenido

¿Que es un Script y que es el Shell Scripting?

Un Scripts de Shell es programa muy útil ya que básicamente es un archivo de texto, que contiene una serie de comandos para shell, que el sistema ejecuta ordenadamente, de arriba hacia abajo, es decir secuencialmente. Para su edición tan solo se requiere un simple editor de textos, como Emacs, Vi, Nano, entre muchos existentes. Los scripts, se comportan de igual manera que los comandos de la shell. Se guardan con la extensión de archivo ".sh" (o sin ella, en algunos casos)  y se ejecutan desde la Shell mediante la orden de comando con la siguiente sintaxis:

sh nombre de script.sh

El Shell Scripting es la técnica de diseñar y crear un Script para un Shell de un Sistema Operativo. Estos suelen ser creados vía Editor de Texto (Gráfico o Terminal) para una mejor compresión de la sintaxis de programación usada. Los Script manejan un tipo de lenguaje de programación que generalmente es interpretado.

Mientras la mayoría de los programas son compilados, porque son convertidos permanente a un código especifico antes de que puedan ejecutarse, un Script de Shell permanece en su forma original, es decir, su código fuente permanece en forma de texto, y es interpretados comando por comando cada vez que se ejecuta. Aunque los Scripts pueden ser compilados también, esto no es algo que suela ser usual.

Shell Scripting: Caracteristicas de los Scripts

Características de los Script de Shell

  1. Son fáciles de programarse.
  2. Tienen un mayor costo de procesamiento cuando son ejecutados.
  3. Usan intérpretes en lugar de compiladores para ejecutarse.
  4. Pueden interactuar o comunicarse con componentes escritos en otros lenguajes de programación.
  5. Vienen elaborados en archivos de texto sin formato.
  6. Poseen una estructura de código que suele ser muy pequeña en comparación con programas similares realizados en otros lenguajes de programación compilados.
Shell Scripting: Tipos de Lenguajes y Shell

Tipos de lenguajes y Shells

Lenguajes de control de tareas y Shells

  1. cmd.exe
  2. command.com
  3. appleScript
  4. ash, bash, csh, dash, ksh, sh, zch
  5. jscript
  6. vbscript
  7. rexx

Lenguajes de Macros con Interfaz grafica

  1. AutoHotkey
  2. AutoIt
  3. Automator
  4. Expect

Lenguaje de Aplicaciones específicas

  1. ActionScript
  2. MATLAB
  3. MIRC
  4. QuakeC

Lenguajes de programación web

a) Del lado del servidor:

  1. PHP
  2. ASP
  3. JavaServer Pages
  4. ColdFusion
  5. IPTSCRAE
  6. Lasso
  7. MIVA
  8. SMX
  9. XSLT

b) Del lado del cliente:

  1. JavaScript
  2. JScript
  3. VBScript
  4. Tcl

Lenguajes de procesamiento de textos

  1. AWK
  2. Perl
  3. Sed
  4. XSLT

Lenguajes dinámicos de propósito general

  1. APL
  2. Boo
  3. Dylan
  4. Ferite
  5. Groovy
  6. IO
  7. Lisp
  8. Lua
  9. MUMPS
  10. NewLISP
  11. Nuva
  12. Perl
  13. PHP
  14. Python
  15. Ruby
  16. Scheme
  17. Smalltalk
  18. SuperCard
  19. Revolution
Shell Scripting: BASH Shell

¿Que es Bash?

Como mencionamos al principio de esta guía existen múltiples implementaciones de la Shell dentro de un típico S.O. de GNU/Linux agrupadas en 2 grandes familias, siendo la más conocidas la de Bourne Shell. Y dentro de esta familia existen los siguientes Shell: ash, bash, csh, dash, ksh, sh, zsh. Siendo el más conocido y usado el Bash Shell.

Bash Shell es un programa informático cuya función consiste en interpretar órdenes. Está basado en la shell de Unix y es compatible con POSIX. Fue escrito para el proyecto GNU y es el intérprete de comandos por defecto en la mayoría de las distribuciones de Linux. Por ende, en este artículo y los futuros siguientes sobre los Script y Shell Scripting que publiquemos nos basaremos en este shell para elaborar y ejecutar los mismos.

Shell Scripting: Ejecutar una Shell

¿Como ejecutar una Shell en GNU/Linux?

Debido a que en muchas distribuciones el Terminal o Consola no suele estar a simple vista y este es el medio para interactuar con la Shell del Sistema Operativo, el primer paso para trabajar con una Shell es ejecutar una Terminal o Consola desde el Menú de Inicio de la Distro o directamente ejecutando un Terminal o Consola virtual mediante la secuencia de teclas definida para ello, que suele ser "Ctrl+Alt+f1", o f2, f3 hasta f7 u f8, dependiendo de la Distribución GNU/Linux que se este usando.

Shell Scripting: Crear un Script de Bash Shell

¿Como crear y ejecutar un Script en GNU/Linux?

Creación

Un buen ejercicio ejemplo podría ser crear nuestro propio y sencillo Script hecho en Bash Shell, llamarlo primer_script.sh y agregarle el contenido siguiente:

#!/bin/bash
echo Mi Primer Script

La primera línea del script especifica que programa que debe ejecutar el mismo. Y en caso de que dicho programa no se encuentre se produzca un error que impida la ejecución del mismo.

#!/bin/bash

La segunda línea del script ejecuta la orden de comando. Dicha orden de comando ejecuta el comando "echo" con los argumentos "Mi Primer Script", haciendo que dicho mensaje se muestre por pantalla.

echo Mi Primer Script

Ejecución

Se puede ejecutar el script de dos formas:

  • Invocando al intérprete especificado para que ejecute el script:
bash primer_script.sh
  • Invocando al intérprete por defecto para que ejecute el script:
sh hola_mundo.sh

Nota: Muchas veces el no invocar el shell correcto, puede provocar un mal funcionamiento a medias o total del Script. Lo ideal es que el Shell invocado en la primera linea sea el utilizado para ejecutarlo.

También se puede ejecutar directamente el script de la siguiente manera:

./hola_mundo.sh

Nota: ./ indica ejecutar desde el directorio actual.

Desarrollo y Análisis

De aquí en adelante lo que resta es insertar más líneas de código, es decir, ordenes de comandos, conocidas o no, dentro del Script para ir viendo el funcionamiento del mismo y aprender más.

Shell Scripting: Mejores prácticas

Mejores Practicas para crear un Script

Como vimos en la anterior publicación en nuestro blog, llamada ¿Cómo ser un buen Administrador de Sistemas o Sysadmin?, la automatización de tareas es algo fundamental para el buen desempeño del cargo de Sysadmin, y el mantenimiento y la monitorización eficaz de las tareas encomendadas al mismo.

Por lo general, en todas las área de TI donde los Administradores de Sistemas y Servidores manejan sistemas operativos GNU/Linux y/o Unix, hay infinidad de tareas programadas que otros Administradores han programado y que en algún momento deben ser gestionadas para resolver algún problema, mejorarla y/o eliminarla, para cumplir con algún nuevo requerimiento de la Organización donde se trabaja.

Así que no es extraño, que cualquier nuevo Sysadmin en cualquier organización, deba enfrentarse en algún momento a la difícil y tediosa tarea de entender algunos de los Script de Shell creados por antiguos Sysadmin, que no están bien escrito, o están en una estructura lógica o de redacción, nada fácil de entender, o en el peor de los casos, con ordenes de comandos, atípicas, antiguas, ineficientes, o escritas de forma torpe y confusa.

Shell Scripting: Los Sysadmin y los Script

Si bien la solución de los scripts mal escritos es siempre una molestia momentánea, esto le enseña a cualquier buen Sysadmin algo importante. Si uno va ha crear un Script de Shell que se va a utilizar más allá de hoy, siempre es mejor escribirlos de forma muy profesional y estandarizada, para que pasado el tiempo, cualquier otro, o uno mismo, pueda con el mínimo esfuerzo y conocimiento lograr una comprensión y administración en un mínimo de tiempo.

Para evitar eso de parte de los Sysadmin actuales para con los futuros que se encarguen de lo dejado hay una serie de "Mejores practicas para crear un Script de Shell en GNU/Linux", que se deben llevar a cabo para poder realizar mejores Scripts, y así evitar que nos nuevos pasen por una tediosa y difícil tarea de averiguar que codifico, como y porqué, y por qué ya no funciona.

Shell Scripting: Mejores prácticas

Algunas de estas "Mejores practicas para crear un Script de Shell en GNU/Linux" son las siguientes:

  1. Indente su código: Un código en forma legible es muy importante, procure realizar las indentaciones necesarias para que el mismo obtenga una estructura lógica satisfactoria.
  2. Añada espacios de separación entre secciones de código: Separe el código por módulos o secciones para hacerlo legible y fácil de entender.
  3. Comente lo más que pueda el código: Añadir las descripciones necesarias a cada Orden de Comando, Sección de Código o Función para explicar lo que pasa dentro del propio código, es muy útil.
  4. Crear variables con nombres descriptivos de sus funciones: Asigne nombres de variables descriptivos que identifiquen de forma obvia la función para la cual será creada, de forma tal que dicho nombre implícitamente de explicación de qué valores o funciones realiza.
  5. Utilice la sintaxis VARIABLE=$(comando) para la sustitución de comandos: Si desea crear una variable cuyo valor se derive de otro comando, hay dos maneras de hacerlo en bash. Con backtick, es decir, con los caracteres ` ` , Ejemplo: VARIABLE=`comando -opciones parámetros`. Esta forma ya esta en desuso, por lo que la sintaxis correcta más moderna, aceptada y recomendada es: VARIABLE=$(comando). Ejemplo: NO: DATE=`date +%F` / SI: DATE=$(date +%F).
  6. Utilice módulos y / o variables de Validación de Súper-usuario y Usuario Autorizado con o sin contraseña: Para aumentar los niveles de seguridad en caso de ser necesario.
  7. Utilice módulos y / o variables de Validación del Sistema Operativo (Distro, Versión, Arquitectura): para prevenir uso en plataformas no adecuadas.
  8. Utilice módulos (procedimientos / secciones) de confirmación de ejecución de acciones (módulos / funciones) criticas o por lotes: Para minimizar errores por improvisación o descuido.
  9. Provea Interfaces Amigables al usuario (User-friendly): Por Terminal con menús y colores creados con el  comando "Dialog" y en Interfaces gráficas (GUI) con los comandos "Zenity" y "Gxmessage". Incluyas notificaciones sónicas si fuese necesario. Traté en la medida de lo posible que su Script pueda funcionar de las 2 maneras (Terminal / GUI) con solo habilitar y deshabilitar opciones, módulos o funciones.
  10. Inclúyale módulos (mensajes) de Bienvenida y Despedida: en caso de ser necesarios para aumentar la interactividad con el usuario.
  11. Incluya un modulo de verificación de doble ejecución: Créele un archivo de bloqueo para evitar que pueda ser ejecutado mas de 1 vez al mismo tiempo.
  12. Racionalice el tamaño del Script con Funciones y / o Módulos externos: Si el Script es muy grande divida el código utilizando funciones o divídalos en pequeños Script que sean invocados por medio de uno principal.
  13. Invocación de forma clara y evidente de los llamados a otros Interpretes (lenguajes de programación) dentro del Script: Invóquelos de forma clara por lineas o módulos.
Shell Scripting: Mejores prácticas

Recuerde adicionalmente seguir estas otras recomendaciones especificas:

  • Creación del Encabezado: Invocación del Shell
#!/ruta/interprete [argumento-parámetro]

La Linea superior es la estructura básica con la que se invoca un Shell Script para GNU/Linux. Sus elementos pueden describirse de la siguiente manera:

#! => sha-bang

El sha-bang (#!) en la parte superior del Script creado o ha crearse es una secuencia de comandos que le dice a nuestro Sistema Operativo que nuestro archivo es un conjunto de comandos que se alimentará (será interpretado) por el intérprete de comandos indicado luego del mismo. El par de caracteres #! en realidad, es un número mágico de dos bytes, un marcador especial que designa un tipo de archivo, y en nuestro caso, un Script de Shell ejecutable. En otras fuentes literarias el Sha-Bang puede verse escrito como She-Bang.

Inmediatamente después del Sha-Bang viene el nombre de la ruta donde se ubica el interprete a ejecutarse más el nombre de dicho interprete. En otras palabras, esta es la ruta de acceso al programa que interpreta los comandos en el guión, ya se trate de una interprete, un lenguaje de programación, o una utilidad. Este intérprete de comandos a continuación, ejecuta los comandos en el Script, comenzando en la parte superior (la línea que sigue a la del Sha-Bang), y haciendo caso omiso de los comentarios. Algunos Sha-Bang pueden ser:

#!/bin/sh
#!/bin/bash
#!/usr/bin/perl
#!/usr/bin/tcl
#!/bin/sed -f
#!/usr/awk -f

Shell Scripting: Mejores prácticas

Cada una de las líneas arriba descritas (como ejemplo) invoca un intérprete de comandos diferentes. La linea /bin/sh, invoca al shell por defecto (Bash en un Sistema Operativo GNU/Linux) u otro similar. Usando "#!/bin/sh", el valor predeterminado del Bourne Shell en la mayoría de las variantes comerciales de los sistemas operativos basados en UNIX, hace que el Script creado sea portable hacia otros sistemas operativos que no son Linux propiamente, sino similares o basados en él o UNIX, aunque esto sacrifica características específicas de BASH. Sin embargo, la secuencia "#!/bin/sh" se ajusta a la norma POSIX sh estándar.

Tenga en cuenta que la ruta dada en el sha-bang debe ser correcta, de lo contrario un mensaje de error, por lo general, "Comando no encontrado", será el único resultado de la ejecución del script. Recuerde que el par de caracteres "#!" se puede omitir si el Script se compone sólo de un conjunto de comandos genéricos del Sistema Operativo, es decir, sin utilizar directivas internas del Shell. Y tenga en cuenta una vez más que "#!/bin/sh" invoca el intérprete shell por defecto, que por defecto es "#!/bin/sh" en un equipo con el Sistema Operativo GNU/Linux.

Con respecto a los argumentos, son varios los que se pudiesen emplear pero el más común es: "-e". el cual hace que el script valide los errores de ejecución de algún comando (linea de ejecución) y en caso positivo, forza la parada y salida del mismo, uno típico es "-f" para indicar cuál es el script que tiene que cargar y uno de los más raros es "-rm" que realiza el borrado del mismo una vez finaliza su ejecución. Solo es posible especificar en el sha-bang hasta un único argumento (parámetro) después del nombre del programa a ejecutar.

Y por ultimo, indicarle al script las variables globales que utilizará en partes esenciales del código, para validación de eventos, tales como la ruta de ejecución, usuario autorizado, nombre del script, entre otros. Y finalizar con los datos del programa, creador, organización, entre otros, más el licenciamiento que aplica al programa.

Shell Scripting: Mejores prácticas

Por ejemplo, un buen sha-bang y encabezado de un Script de Shell puede ser:

#!/usr/bin/env bash

Porqué mediante el comando "env" le indicamos al Sistema Operativo el interpreté a usarse con la ruta exacta especificada dentro del mismo por defecto, lo cual nos permite tener un sha-bang que nos aumente la portabilidad del mismo, debido a que no en todos los S.O. GNU/Linux los interpretes o programas tienen la misma ruta.

Y sin argumentos, debido a que para eso es mejor el uso del comando set, debido a que con el podemos validar errores, generales (-e) o específicos (+x / -x), o para limpiar los valores predefinidos globales para las variables de entornos (-i) o especificas (-u / –unset). Y por ultimo, para ejecutar acciones determinadas (- o) complementarias dentro del script.

Shell Scripting: Mejores prácticas

Por lo que en resumen, el mismo quedaría de la siguiente manera:

#!/usr/bin/env bash
set -o errexit
set -o nounset
set -o pipefail
# set -o xtrace

Donde cada línea con cada orden de comando sirve para:

#!/usr/bin/env bash
# Indicar el interprete bash con ruta absoluta por Sistema Operativo.
set -o errexit
# Indicarle al script detener y cerrarse cuando un comando o linea de ejecución falle.
set -o nounset
# Indicarle al script detener y cerrarse cuando la secuencia de comandos intenta utilizar variables no declaradas.
set -o pipefail
# Obtener el estado de salida de la última orden que arrojó un código de salida distinto de cero.
# set -o xtrace
# Rastrear lo que se ejecuta. Útil para la depuración. Habilítelo para verificar errores solamente.
Shell Scripting: Mejores prácticas

Una excelente recomendación es que una vez construido su Script de Shell, agregue la(s) líneas del BSM para empezar a depurar y perfeccionar su Script y dejarlo altamente funcional. Cuando lo desee agregue ha dicho BSM la opción (-x) para lograr el mismo efecto que cuando habilita la línea: set -o xtrace, en el método anterior, es decir, su línea de BSM debería quedar así:

set -eoux pipefail
Shell Scripting: Mejores prácticas
  • Configuración de la Sección de la Salida de las Variables configuradas
IFS=$'\n\t'

Agregando esta línea se reconfigura la Variable "Internal Field Separator" (Separador de campo interno) y se logra una mejor visualización y/o captura de las palabras (campos) de una cadena de caracteres. Habilítelo o no, según sus requerimientos y necesidades.

Shell Scripting: Mejores prácticas
  • Configuración de la Sección de la configuración predeterminada del terminal de ejecución
setterm --reset

Agregando esta línea se resetea por completo toda la sesión y los parámetros de ejecución del terminal donde se invoca el uso del Script de Shell ejecutado. Habilítelo o no, según sus requerimientos y necesidades.

Estas y otros recomendaciones de su propia experiencia o conocimiento le serán muy útiles para crear mejores y más eficiente Script de Shell.

Shell Scripting: Aprender en Línea

 

Aprender Shell Scripting en Línea

Muchas veces saber o dominar los lenguajes de terminal es muy útil debido a que cuando nos toca trabajar en un ambiente avanzado donde por lo general hay un montón de configuraciones especiales (avanzadas) o tareas programadas que otros administradores escribieron, y que ahora deben ser gestionadas para resolver algún problema, mejorar algo ya existente, dicho conocimiento nos es de gran ayuda. Y si podemos contar con recursos en linea que nos faciliten la tarea de comprender o dominar los mismos pues mejor aún.

Por eso, esta serie de recursos en linea - que mencionaremos a continuación en este tutorial - esperamos sirvan para la construcción de mejores Scripts, sin tener que pasar por una tediosa y difícil tarea de averiguar como lo codifico o porque fue codificado así, y por qué ya no funciona.

Shell Scripting: Aprender en Línea

Editores Bash

Estos Editores de Bash en línea nos permiten escribir de forma fácil los Scripts necesarios directamente en el navegador para probarlos y así validar su funcionamiento. Cada uno tiene bondades y limitaciones por lo que el uso de 2 o mas puede complementar al otro para un uso más eficiente a la hora de desarrollar o comprender determinados Scripts. Unos son sencillos y básicos y otros poseen robustas interfaces llenas de funciones y utilidades. Y hasta algunos incluyen material didáctico para el aprendizaje de ciertos lenguajes de programación.

La mayoría son multi-lenguajes, es decir, permiten probar variados lenguajes de Terminal GNU/Linux y otros Lenguajes de programación más diversos y avanzados. Algunos tienes sus interfaces en Ingles y otros son multi-lenguajes. Otros permiten configurar los argumentos de la línea de comando y las entradas "stdin", y otros exigen que el usuario se registre o no, algunos permiten la colaboración en tiempo real.

Y entre los más conocidos están:

Shell Scripting: Aprender en Línea Shell Scripting: Aprender en Línea

Otros útiles terminales en línea son:

Web Útiles

Sitio web que permite aprender Shell Scripting superando retos de tareas presentadas. Almacena las mejores respuestas en forma de biblioteca de soluciones ofreciendo una excelente base de datos de conocimientos de ordenes de comandos para los Script de Shell.

Shell Scripting: Aprender en Línea

Sitio web que permite registrar y explorar una enorme base de datos de línea de comandos. Da la posibilidad de comentar, discutir y votar positiva o negativamente las ordenes de comando guardadas.

Shell Scripting: Aprender en Línea

Nos permite analizar líneas de comando para detectar errores o validar y optimizar su estructura, logrando así una forma muy practica de auto-enseñanza para cada usuario según el material explorado por si mismo.

Shell Scripting: Aprender en Línea

Conclusión

Hay mucho teoría disponible para leer sobre los comandos de terminal y sus usos avanzados dentro y fuera de un Script de Shell, por lo que en esta guía se ha explicado solo constituye un punto inicial de aprendizaje en esta área. Aunque más adelante en otros artículos y tutoriales relacionados exploraremos un poco más al detalle los comandos de terminal y sus usos dentro o fuera de un Script.

Sin embargo, un enfoque de enseñanza apropiado para “Aprender Shell Scripting” suele ser el examinar un Script totalmente funcional, descomponerlo, estudiarlo sentencia por sentencia, linea a linea, comando por comando, variable por variable, hasta entender, como funciona cada elemento por separado y como se engrana en el código general.

Shell Scripting: Conclusion

Este método suele ser una especie de Ingeniería Inversa o Reingeniería de Software. Todo esto con la finalidad de apropiarse del conocimiento, mejorarlo (optimizarlo) y compartirlo, en beneficio colectivo y una mejor administración y optimización de los sistemas operativos libres.

Por ahora esperamos que este tutorial haya sido suficiente para que logren enfocarse a fondo en cada pequeño aspecto de la Shell, un Script y el uso del Shell Scripting. Y sea de gran ayuda a la hora de realizar sus propios Script de Shell para que así no tenga que pasar por una tediosa y difícil tarea de averiguar que codificaron, como y porqué, y por qué ya no funciona.

Content laptop

Gracias por visitar el blog oficial de la tienda ReDIGIT Informática Circular. Si estás buscando ordenadores, monitores o portátiles baratos, en nuestra tienda online podrás encontrar PC de sobremesa a partir de 99 euros IVA incluido y portátiles económicos con 2 años de garantía. Todos los equipos en venta en ReDIGIT son de ocasión (segunda mano, renovados, refurbished y outlet), funcionan perfectamente y son ideales para cualquier tarea de tipo doméstico y profesional. ReDIGIT es la primera tienda en España que ofrece hasta 3 años de garantía en productos de informática de ocasión. Ponte en contacto con nosotros llamando/escribiendo directamente al Tel. y WhatsApp: 974 353 720.

  1. Debian
  2. Anual
  3. Windows
  4. Ubuntu
  5. Windows 10
  6. GNU/Linux
Ofertas ordenadores usados