Algo de Linux

viernes, 22 de junio de 2018

Paquete pkgsync 1.54: Modificado pkgsync para mostrar información acerca del fichero y paquete cuando se usa la opción -t, --test-files

He modificado el paquete pkgsync (versión 1.54) para que muestre más información al utilizar la opción -t, --test-files.

Ahora, mostrará el nombre del paquete que se está chequeando y en qué fichero se encuentra dicho nombre.

Recordad que esta opción permite chequear qué paquetes incluidos en los ficheros con listas de paquetes alojados en /etc/pkgsync no se encuentran en los repositorios y que, además, existe un argumento (r) para eliminarlos.

Si queremos testear los ficheros tan sólo tenemos que hacer un:
# pkgsync -t

Y si, además de testearlos, queremos eliminar los nombres de aquellos paquetes que nno se encuentran en los repositorios, haremos un:
# pkgsync -tr


Aquí podéis ver el código completo de pkgsync:


Si queréis descargar el paquete que instala esta versión, podéis hacerlo desde el siguiente link:
https://drive.google.com/file/d/1bqK-lK9aVCmHLSAhmrMt4TDADaWy77sE/view?usp=sharing
Publicado por primera vez en http://enavas.blogspot.com.es

miércoles, 20 de junio de 2018

Crear un usuario de sistema sin directorio HOME

Crear un usuario de sistema sin directorio HOME es tan sencillo como ejecutar el siguiente comando:
# adduser --system --no-create-home USERNAME
Publicado por primera vez en http://enavas.blogspot.com.es

Error en apt-mirror (0.5.1-1): No mirroriza bionic/main DEP-11 64x64@2 iconos ni bionic-updates/main DEP-11 64x64@2 iconos

Esta versión de apt-mirror (0.5.1-1) no mirroriza bionic/main DEP-11 64x64@2 ni bionic-updates/main DEP-11 64x64@2

Parece ser que tal y como está escrito el código, se está ignorando el símbolo arroba.

Para evitar el problema, matando dos pájaros de un tiro, he aprovechado para actualizar la máquina virtual que implementa el mirror de Debian Jessie a Debian Stretch, ya que tiene una versión más reciente  del paquete apt-mirror sin ese problema.

Publicado por primera vez en http://enavas.blogspot.com.es

martes, 19 de junio de 2018

cambiamarca: Script para cambiar la marca de un equipo en el fichero /etc/escuela2.0

Reutilizando el código del script cambiahostname, he escrito otro script cambiamarca que permite cambiar la marca del equipo en el fichero /etc/escuela2.0:
#!/bin/bash
#
# Esteban M. Navas 
# Fecha creación:      19/07/2018
# Última modificación: 19/07/2018

# Si no hay parámetros, el script se está usando de forma interactiva
if [ -z "$1" ]; then

   DIALOG="dialog"
   tempfile=`tempfile 2>/dev/null` || tempfile=/tmp/test$$
   trap "rm -f $tempfile" 0 1 2 5 15

   $DIALOG --title "Marca del equipo" --clear \
           --inputbox "Introduzca la marca que quiere asignar a este equipo [ ACER, APD, HP, Xtrem, ... ]:" 15 51 2> $tempfile

   retval=$?

   case $retval in
     0)
       MARCA=`cat $tempfile`
     ;;
     1) ;;
   esac
else
   MARCA=$1
fi


if [ "$MARCA" ] ; then

   grep -q '^marca=' /etc/escuela2.0 && sed -i "s/^marca=.*/marca=$MARCA/" /etc/escuela2.0 || echo "marca=$MARCA" >> /etc/escuela2.0

   /usr/sbin/sinc_puppet -f now
#  /usr/local/sbin/pkgsync -pcr

fi
En este caso:
  • Si existe, reemplazamos la definición del tipo de host en el fichero /etc/excuela2.0.
  • Si no existe, simplemente la insertamos.
Al igual que en el script cambiahostname, se puede indicar el nombre del host como parámetro del script. Y, si no se especifica, mostrará un cuadro de diálogo para que lo escribamos.

Tras cambiar el host, se ejecutará sinc_puppet (He dejado la línea que ejecutaría pkgsync comentada).

Publicado por primera vez en http://enavas.blogspot.com.es

lunes, 18 de junio de 2018

Modificado el script musthave-build para Ubuntu Bionic Beaver

He modificado el script musthave-build para generar la lista de paquetes instalados en el sistema en Ubuntu Bionc Beaver. 

Aquí podéis ver el código:
Publicado por primera vez en http://enavas.blogspot.com.es

miércoles, 13 de junio de 2018

Script auto-config-network: Configurar automáticamente las interfaces de red del equipo

El script auto-config-network es un script ideal para ejecutar en una máquina que acabamos de clonar. Su función es configurar automáticamente las interfaces de red de la máquina donde lo ejecute.

Lo primero que hace es eliminar el fichero /etc/udev/rules.d/70-persistent-rules para que no tenga datos de la máquina modelo en caso de que se hubiera clonado el equipo. Una vez eliminado, lo vuelve a regenerar detectando las interfaces de red de la máquina.


Por otro lado, hace una copia el fichero /etc/network/interfaces en /etc/network/interfaces.old y lo regenera automáticamente, haciendo lo siguiente:
  • Configura la interfaz localhost.
  • Configura con una IP estática (192.168.0.254), las interfaces configuradas para servir DHCP en el fichero /etc/default/isc-dhcp-server que tienen link.
  • Configura con una IP dinámica las interfaces que tienen link pero no se encuentran configuradas para servir DHCP.
Éste es el script que utilizaré para configurar las interfaces de red de una máquina una vez clonada.

Instalarlo es muy sencillo:
# wget --no-check-certificate -O /usr/local/sbin/auto-config-network https://raw.githubusercontent.com/algodelinux/cambiahostname/master/auto-config-network
# chmod 755 /usr/local/sbin/auto-config-network
Aquí podéis ver el código completo de auto-config-network:

Publicado por primera vez en http://enavas.blogspot.com.es

Script cambiahostname: Cambiar el nombre de una máquina y realizar un pkgsync

Escribí el script cambiahostname tan sólo para facilitar la tarea de establecer el nombre del equipo en un curso de puppet. Pero, más adelante, me di cuenta que podía resultarme muy útil en el centro si lo modificaba para que ejecutara pkgsync tras cambiar el nombre. Estos últimos días, he vuelto a modificarlo de manera que:

  • Permite introducir el nombre de la máquina como parámetro.
  • Si no se introduce el nombre como parámetro, tratará de obtenerlo consultando al DNS definido en DNSSERVER.
  • Si no se puede obtener el nombre consultando al servidor DNS, se solicita su introdución mediante teclado. 

Éste es el script que utilizo para configurar una máquina una vez clonada.

Instalarlo es muy sencillo:
# wget --no-check-certificate -O /usr/local/sbin/cambiahostname https://raw.githubusercontent.com/algodelinux/cambiahostname/master/cambiahostname
# chmod 755 /usr/local/sbin/cambiahostname
Aquí podéis ver el código completo de cambiahostname:

Por último, tan sólo comentar que el script hace uso del comando nslookup que pertenece al paquete dnsutils. Por tanto, para que el script funcione, deberéis tener instalado dicho paquete. Como se encuentra en los repositorios, resulta fácil de instalar:
# apt-get install dnsutils
Publicado por primera vez en http://enavas.blogspot.com.es

Script get-my-hostname: Obtener el nombre del equipo consultando al servidor DNS definido en DNSSERVER

El script get-my-hostname permite obtener el nombre del equipo en que se ejecuta. Para ello, realiza una consulta al servidor DNS definido en una variable llamada DSNSERVER.

Este script puede sernos muy útil cuando vamos a configurar un equipo registrado en el servidor DNS, tras una clonación, por ejemplo.

Instalarlo es muy sencillo:
# wget --no-check-certificate -O /usr/local/sbin/get-my-hostname https://raw.githubusercontent.com/algodelinux/get-my-hostname/master/get-my-hostname
# chmod 755 /usr/local/sbin/get-my-hostname
Aquí podéis ver el código completo de get-my-hostname:

Por último, tan sólo comentar que el script hace uso del comando nslookup que pertenece al paquete dnsutils. Por tanto, para que el script funcione, deberéis tener instalado dicho paquete. Como se encuentra en los repositorios, resulta fácil de instalar:
# apt-get install dnsutils
Publicado por primera vez en http://enavas.blogspot.com.es

lunes, 11 de junio de 2018

LVM: Aumentar el tamaño de un volumen lógico

Ahora que he añadido un segundo volumen físico al NAS, observo que el espacio de almacenamiento del volumen lógico que aloja backups y máquinas virtuales comienza a tener poco espacio libre:
# df -h | grep backup
/dev/mapper/openmediavault--vg-backup           1,7T   1,4T  231G  86% /export/backup
Por tanto, voy a aumentar en 500 GB el tamaño de este volumen lógico:
# lvextend -L+500G /dev/openmediavault-vg/backup 
  Size of logical volume openmediavault-vg/backup changed from 1,65 TiB (433822 extents) to 2,14 TiB (561822 extents).
  Logical volume backup successfully resized
Una vez aumentado el tamaño del volumen logico, redimensionamos el sistema de archivos alojado en dicho volumen lógico:
# resize2fs /dev/openmediavault-vg/backup 
resize2fs 1.42.12 (29-Aug-2014)
El sistema de ficheros de /dev/openmediavault-vg/backup está montado en /media/e3da494b-3f93-43f3-ad44-55c23672533f; hace falta cambiar el tamaño en línea
old_desc_blocks = 106, new_desc_blocks = 138
The filesystem on /dev/openmediavault-vg/backup is now 575305728 (4k) blocks long.
Por último, comprobamos que el tamaño del sistema de archivos se ha aumentado:
# df -h | grep backup
/dev/mapper/openmediavault--vg-backup           2,2T   1,4T  703G  66% /export/backup
Un detalle que es importante destacar es que podemos aumentar el tamaño del sistema de ficheros online, es decir, sin desmontarlo, porque el kernel 2.6 y sucesivos, soportan el redimensionado on-line para sistemas de ficheros ext3 y ext4. Sin embargo, si en lugar de aumentar el tamaño del sistema de archivos, quisiera reducirlo, tendría que hacerlo forzosamente off-line. Es decir, arrancando desde un live-cd, por ejemplo.
Publicado por primera vez en http://enavas.blogspot.com.es

pvcreate: Inicializar un disco o partición para usar con LVM

pvcreate nos permite inicializar un volumen físico (ya sea un disco o una partición) para utilizarlo con LVM.

Si lo que queremos inicializar es una partición hay dos posibilidades:
  • Si la partición es DOS, tendremos que definir el tipo de partición con el identificador 0x8e utilizando por ejemplo fdisk o cfdisk.
  • Si la partición es GPT, el identificador que tendremos que asignar a dicha partición es E6D6D379-F507-44C2-A23C-238F2A3DF928 utilizando gdisk.
Ahora bien, si lo que queremos es inicializar un disco entero, debemos eliminar la tabla de particiones. Por ejemplo, suponiendo que queremos inicializar el disco /dev/sdb:
# dd if=/dev/zero of=/dev/sdb bs=512 count=1
1+0 registros leídos
1+0 registros escritos
512 bytes (512 B) copiados, 0,526633 s, 1,0 kB/s
Una vez eliminada la tabla de particiones, podemos inicializar el disco:
# pvcreate /dev/sdb
  Physical volume "/dev/sdb" successfully created
Y una vez creado el volúmen físico, no tenemos nada más que añadirlo al grupo de volúmenes:
# vgextend openmediavault-vg /dev/sdb
  Volume group "openmediavault-vg" successfully extended
root@nas:~# vgdisplay
  --- Volume group ---
  VG Name               openmediavault-vg
  System ID             
  Format                lvm2
  Metadata Areas        2
  Metadata Sequence No  27
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                9
  Open LV               8
  Max PV                0
  Cur PV                2
  Act PV                2
  VG Size               6,37 TiB
  PE Size               4,00 MiB
  Total PE              1669196
  Alloc PE / Size       709674 / 2,71 TiB
  Free  PE / Size       959522 / 3,66 TiB
  VG UUID               S8vhnq-5qyu-ma9Q-GzQ6-UfXo-u98J-NoQUDD
Publicado por primera vez en http://enavas.blogspot.com.es