Configuración Avanzada de Impresoras Lógicas y Automatización con Scripts Bash

Enviado por Chuletator online y clasificado en Informática y Telecomunicaciones

Escrito el en español con un tamaño de 10,14 KB

Configuración de Impresoras Lógicas y Servicios de Impresión

Este documento detalla los servicios necesarios y el proceso de instalación de una impresora lógica diseñada para derivar documentos a dos impresoras físicas distintas, gestionando el acceso desde diferentes grupos de usuarios.

Instalación del Rol de Servidor de Impresión

Para comenzar, es necesario añadir el rol de Servicio de Impresión en el servidor y aceptar su instalación. Una vez instalado, se procede a configurar la impresora lógica a través del Administrador de Impresión, utilizando el asistente de configuración.

Las funciones clave que se pueden instalar como parte de este servicio son:

  • Servidor de Impresión: Componente principal para gestionar impresoras y colas de impresión.
  • Servicio LPD (Line Printer Daemon): Permite la impresión desde clientes basados en Unix/Linux.
  • Impresión en Internet: Habilita la impresión a través de un navegador web.

Software Requerido y Preparación del Cliente

El software esencial para la administración remota es RSAT (Remote Server Administration Tools).

Para instalar y gestionar estas herramientas, es imprescindible iniciar sesión en el equipo cliente con una cuenta que posea privilegios de administrador. Esto permitirá la correcta interacción y gestión del servidor de impresión de forma remota.

Pasos de Configuración y Habilitación de Acceso Remoto

  1. Instalación de RSAT en el Cliente: Asegúrese de que RSAT esté instalado en el equipo cliente y que se esté utilizando una cuenta con privilegios de administrador.
  2. Habilitar Administración Remota en el Servidor: Verifique que la administración remota esté habilitada en el servidor.
  3. Configuración del Firewall del Servidor: Es crucial configurar el firewall del servidor para permitir el acceso necesario. Esto incluye reglas para:
    • Acceso a la red COM+
    • Administración remota de registro de eventos (entrada NP)
    • RPC (Remote Procedure Call)
    • RPC-EPMAP (RPC Endpoint Mapper)
  4. Ajustes de Política de Seguridad en el Cliente: Para una gestión adecuada, es posible que deba ajustar las políticas de seguridad local en el cliente.
    • Ejecute secpol.msc.
    • Navegue a Directivas de seguridad local.
    • Ajuste la configuración de Control de cuentas de usuario: modo de aprobación de administrador para la cuenta predefinida Administrador según sea necesario.
  5. Reiniciar el Equipo: Después de realizar los cambios, reinicie la máquina para que las configuraciones surtan efecto.
  6. Acceder al Administrador del Servidor: Una vez reiniciado, localice y abra la herramienta Administrador del Servidor en el cliente para gestionar el servidor de impresión.

Scripts de Automatización y Administración de Sistemas

A continuación, se presentan varios scripts Bash útiles para tareas de administración de sistemas, incluyendo la gestión de usuarios, operaciones de archivos y configuración de almacenamiento RAID.

Script para Identificar Usuarios sin Directorio Personal

Este script itera a través de las entradas de usuarios (aunque la sintaxis original de getent es inusual) y muestra aquellos usuarios que no tienen un directorio personal asociado en /home.

for linea in $(getent passwd/group/hosts/protocols)
do
  usuario=$(echo $linea | cut -d ":" -f1)
  if ! [ -d /home/$usuario ]
  then
    echo $usuario
  fi
done

Función volver: Retorno al Menú Principal

Esta función proporciona una interfaz para que el usuario decida si desea regresar al menú principal del programa o finalizar la ejecución.

function volver () {
  echo "¿DESEA VOLVER AL MENU? s/n"
  read volver
  if [ "$volver" = "S" ] || [ "$volver" = "s" ]
  then
    menu
  elif [ "$volver" = "N" ] || [ "$volver" = "n" ]
  then
    echo "FIN DE PROGRAMA"
  else
    clear
    echo "OPCION INTRODUCIDA INCORRECTA"
    volver
  fi
}

Función empaquetar: Creación de Archivos Tar

Permite empaquetar directorios o archivos específicos en un archivo .tar en la ruta deseada.

function empaquetar () {
  echo "Introduce la ruta donde deseas almacenar la copia"
  read almacen
  cd "$almacen" || { echo "Error: El directorio de almacenamiento no existe."; return 1; }
  echo "Introduce la ruta de la que desea hacer copia"
  read ruta
  echo "Introduce el nombre que quieres darle al archivo"
  read nombre
  if [ -d "$ruta" ]
  then
    echo "¿Deseas empaquetar un fichero? S/N"
    read opf
    if [ "$opf" = "S" ] || [ "$opf" = "s" ]
    then
      echo "Introduce el nombre del fichero"
      read fichero
      if [ -f "$fichero" ]
      then
        tar cvf "$nombre.tar" "$ruta/$fichero"
      else
        echo "El fichero no existe"
      fi
    else
      tar cvf "$nombre.tar" "$ruta"
    fi
  else
    echo "El directorio no existe"
  fi
  volver
}

Función comprimir: Creación de Archivos Tar.gz

Similar a la función empaquetar, pero comprime el contenido utilizando gzip, resultando en un archivo .tar.gz.

function comprimir () {
  echo "Introduce la ruta donde deseas almacenar la copia"
  read almacen
  cd "$almacen" || { echo "Error: El directorio de almacenamiento no existe."; return 1; }
  echo "Introduce la ruta de la que desea hacer copia"
  read ruta
  echo "Introduce el nombre que quieres darle al archivo"
  read nombre
  if [ -d "$ruta" ]
  then
    echo "¿Deseas comprimir un fichero? S/N"
    read opf
    if [ "$opf" = "S" ] || [ "$opf" = "s" ]
    then
      echo "Introduce el nombre del fichero"
      read fichero
      if [ -f "$fichero" ]
      then
        tar czvf "$nombre.tar.gz" "$ruta/$fichero"
      else
        echo "El fichero no existe"
      fi
    else
      tar czvf "$nombre.tar.gz" "$ruta"
    fi
  else
    echo "El directorio no existe"
  fi
  volver
}

Función desempaquetar: Extracción de Archivos Tar

Permite extraer el contenido de un archivo .tar, filtrando por mes y especificando rutas de origen y destino.

function desempaquetar () {
  echo "Introduce el mes por el que quieras filtrar"
  read mesemp
  echo "Introduce la ruta de origen"
  read origen
  echo "Introduce la ruta de destino"
  read destino
  # Nota: La siguiente línea asume un formato de salida específico de 'ls -l' y un mes fijo.
  # Puede ser frágil si el formato de 'ls -l' o el mes cambian.
  nombre=$(ls -l /home/user | grep "$mesemp" | grep ".tar" | cut -c 45-80)
  echo "$nombre"
  cd "$origen" || { echo "Error: El directorio de origen no existe."; return 1; }
  tar xvf "$nombre" -C "$destino"
  volver
}

Función copiaseg: Copia de Seguridad

Realiza una copia de seguridad de un archivo o directorio, con la opción de comprimirla, y le asigna un nombre basado en la fecha y hora actuales.

function copiaseg () {
  fecha=$(date +%H.%M_%d-%m-%Y)
  echo "¿Deseas la copia comprimida? (si/no)"
  read op
  echo "Introduce la ruta donde deseas almacenar la copia"
  read almacen
  cd "$almacen" || { echo "Error: El directorio de almacenamiento no existe."; return 1; }
  echo "Haciendo copia..."
  # Nota: Las variables 'nombre', 'ruta' y 'fichero' no están definidas dentro de esta función.
  # Se asume que son variables globales o se pasan de alguna manera.
  if [ "$op" = "si" ]
  then
    tar czvf "$nombre-$fecha.tar.gz" "$ruta/$fichero"
  else
    tar cvf "$nombre-$fecha.tar" "$ruta/$fichero"
  fi
  echo "Copia Completada con éxito"
}

Función particionar_primer_disco: Particionamiento de Disco

Inicia la utilidad fdisk para particionar el primer disco (/dev/sdb), proporcionando instrucciones básicas para crear, seleccionar formato y guardar particiones.

function particionar_primer_disco () {
  clear
  echo "PARTICIONAR EL PRIMER DISCO"
  echo "n es para nueva partición"
  echo "t es para elegir número del formato, si no lo tenemos claro escribimos L"
  echo "w es para guardar"
  fdisk /dev/sdb
  menu
}

Función copiar_tabla_particiones: Copiar Tabla de Particiones

Copia la tabla de particiones del primer disco (/dev/sdb) al segundo disco (/dev/sdc) utilizando sfdisk.

function copiar_tabla_particiones () {
  clear
  echo "COPIAR TABLA DE PARTICIONES"
  sfdisk -d /dev/sdb | sfdisk -f /dev/sdc
  menu
}

Función crear_raid_md0: Creación de RAID 0

Crea un dispositivo RAID 0 (striping) llamado /dev/md0 utilizando las particiones /dev/sdb1 y /dev/sdc1.

function crear_raid_md0 () {
  clear
  echo "CREAR RAID"
  mdadm --create /dev/md0 --level 0 --raid-devices=2 /dev/sdb1 /dev/sdc1
  menu
}

Función caracteristicas_raid: Verificación de RAID

Muestra las características y el estado del dispositivo RAID /dev/md0 utilizando cat /proc/mdstat y mdadm --detail.

function caracteristicas_raid () {
  clear
  echo "CARACTERISTICAS DEL RAID"
  cat /proc/mdstat
  mdadm --detail /dev/md0
  menu
}

Función formatear_raid_ext3: Formateo de RAID

Formatea el dispositivo RAID /dev/md0 con el sistema de archivos ext3.

function formatear_raid_ext3 () {
  clear
  echo "FORMATEAR"
  mkfs.ext3 /dev/md0
  menu
}

Función montar_raid_md0: Montaje de RAID

Monta el dispositivo RAID /dev/md0 en el directorio /mnt/raid0.

function montar_raid_md0 () {
  clear
  echo "MONTAR"
  mount /dev/md0 /mnt/raid0
  menu
}

Entradas relacionadas: