Algo de Linux: septiembre 2016

viernes, 30 de septiembre de 2016

Paquete linex-ubuntu-puppet 2.5

He creado una nueva versión del paquete linex-ubuntu-puppet en el que he realizado las siguientes modificaciones:
  • He añadido el parámetro -f para forzar la ejecución del script /usr/sbin/sinc_puppet de forma manual. De este modo, podremos ejecutarlo, aunque no haya transcurrido el tiempo establecido.
  • He establecido un valor por defecto para WAITFORCERT en el script, por si no se hubiera definido en el fichero de configuración.
https://mega.nz/#!I40xSDgB!PveLjgN2Cu_R6kxQ4B6md3Sk-XTUedRZPQjTr766_Jc
Publicado por primera vez en http://enavas.blogspot.com.es

Buscar un proceso y matarlo de un plumazo

Podemos usar el comando pgrep para comprobar si un proceso está corriendo y combinarlo con kill mediante xargs para matarlo. 

Un ejemplo:
# pgrep -f puppet | xargs kill -9
Publicado por primera vez en http://enavas.blogspot.com.es

jueves, 29 de septiembre de 2016

Paquete linex-ubuntu-puppet 2.4

He creado una nueva versión del paquete linex-ubuntu-puppet de forma que el fichero de configuración /etc/default/sincpuppet no se reemplace a menos que el administrador lo decida.
https://mega.nz/#!QsNHmSQT!7Xfooyi2r839_z3YQFMYCfcLCqx3tckGbgraVWqch08
Publicado por primera vez en http://enavas.blogspot.com.es

Paquete linex-ubuntu-puppet 2.3

He creado una nueva versión del paquete linex-ubuntu-puppet con los siguientes cambios:
  • Modificado sinc_puppet para corregir un bug por el que no se sincronizaba puppet cuando el certificado del cliente no era válido.
  • Añadido parámetro WAITFORCERT al fichero de configuración /etc/default/sincpuppet para que sea configurable por el administrador.
https://mega.nz/#!VkljHSxI!hgTk01F7HaM2DIbN58hNRHQ6mMJ7_6gATiJuDCJ1BHg
Publicado por primera vez en http://enavas.blogspot.com.es

miércoles, 28 de septiembre de 2016

samba-tool: Eliminar la pertenencia de un usuario a un grupo y borrar su cuenta

Podemos eliminar la pertenencia de un usuario a un grupo de la siguiente manera:
root@pdc:/home/admin# samba-tool group removemembers teachers gestor
ldb_wrap open of secrets.ldb
Removed members from group teachers
Una vez eliminada su pertenencia, borramos la cuenta:
root@pdc:/home/admin# samba-tool user delete gestor
ldb_wrap open of secrets.ldb
Deleted user gestor
Publicado por primera vez en http://enavas.blogspot.com.es

samba-tool: Listar los miembros de un grupo

En el post anterior, vimos cómo crear una cuenta de usuario y añadirlo a un grupo utilizando el comando samba-tool. Para comprobar si el usuario ha sido añadido al grupo, no tenemos más que listar los miembros del grupo:
root@pdc:/home/admin# samba-tool group listmembers teachers
ldb_wrap open of secrets.ldb
gestor
Publicado por primera vez en http://enavas.blogspot.com.es

samba-tool: Crear cuentas de usuario y añadirlas a un grupo

Podemos crear una cuenta de usuario utilizando el comando samba-tool:
root@pdc:/home/admin# samba-tool user add gestor P@ssw0rd --given-name="Esteban" --surname="Navas Martin"
User 'gestor' created successfully
Y una vez creada, añadir el usuario a un grupo:
root@pdc:/home/admin# samba-tool group addmembers teachers gestor
ldb_wrap open of secrets.ldb
Added members to group teachers
Como podéis imaginar, teniendo el comando samba-tool es muy fácil hacer un script que parsee los ficheros de exportación de profesores, alumnos y grupos; y cree automáticamente las cuentas de Active Directory. Publicado por primera vez en http://enavas.blogspot.com.es

samba-tool: Añadir grupos a una unidad organizativa diferente

Por defecto, samba-tool añade los grupos a la unidad organizativa Users (ou=Users):
root@pdc:/home/admin# samba-tool group add students
root@pdc:/home/admin# samba-tool group add teachers
Si queremos añadirlos a otra unidad organizativa diferente, tendremos que especificarlo mediante el parámetro groupou. Por ejemplo, supongamos que queremos añadir nuestros grupos a la ou
root@pdc:/home/admin# samba-tool group add students --groupou=cn=Groups
root@pdc:/home/admin# samba-tool group add teachers --groupou=cn=Groups
Publicado por primera vez en http://enavas.blogspot.com.es

sed: Eliminar las barras de una fecha

Eliminar las barras de una fecha es muy sencillo si utilizamos el comando sed. Tan sólo hay que reemplazar la barra "\" por "nada", "escapando el caracter para que no lo interprete el comando sed: "\/".
Ejemplo:
# echo "22/12/1996" | sed 's/\///g'
Publicado por primera vez en http://enavas.blogspot.com.es

Chocolatey: Desinstalar un paquete

Desinstalar un paquete gestionado por Chocolatey es tan sencillo como usar la opción uninstall.
Ejemplo:
C:\Windows\System32> choco uninstall -y puppet
Publicado por primera vez en http://enavas.blogspot.com.es

viernes, 23 de septiembre de 2016

linex-ubuntu-puppet 2.2

Como ya comenté en un post de julio de 2016, rectifiqué el paquete linex-ubuntu-puppet para modificar el tipo de máquina x360, cambiándolo por notebookHP:

productname  tipo
"HP ProDesk 600 G2 SFF" infolab
"HP ProDesk 600 G1 SFF" siatic
"HP x360 310 G2 PC" notebookHP
"HP ProBook 4510s" HP-Probook
"P5Q DELUXE" Telefonica
"8317KLG"|"8317KHG" ibm
"8317KLG"|"TravelMate 5735Z"  Travelmate
"G41MT-S2" workstation
"A0532h" notebookACER
"N148P" notebookXTREM
"To be filled by O.E.M."                notebookAPD
(en cualquier otro caso) otros:

En esta última versión del paquete, he modificado el script sinc_puppet para que a la hora de sincronizar el cliente, utilice el uuid en lugar del nombre del host.

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

jueves, 22 de septiembre de 2016

Reconfigurar la distribución del teclado en distribuciones Ubuntu

Para reconfigurar la distribución del teclado en Ubuntu tenemos que reconfigurar el paquete keyboard-configuration en lugar del paquete console-setup, como hacíamos en Debian.
# dpkg-reconfigure keyboard-configuration
Este paquete configura las preferencias del teclado en /etc/default/keyboard y reemplaza al paquete console-setup. Publicado por primera vez en http://enavas.blogspot.com.es

Añadida nueva acl a squid

Hacía mil años que no revisaba la configuración de squid. Así que, aprovechando que me habían pedido añadir a la lista de permitidos el acceso a una página de juegos de geografía, he revisado la configuración y he visto que hay una regla para denegar el acceso a páginas por expresiones regulares:
acl deny_words url_regex "/etc/squid3/acl/deny_words"
http_access allow deny_words
Pero no hay una regla para permitir el acceso a páginas por expresiones regulares, por lo que la he añadido al fichero de configuración:
acl accept_words url_regex "/etc/squid3/acl/acceppt_words"
http_access allow accept_words
No olvidéis que el orden de las acl se evalúa de arriba a abajo. Lo que significa que hay que añadir la acl en el lugar más adecuado dependiendo de como queráis filtrar.
Publicado por primera vez en http://enavas.blogspot.com.es

miércoles, 21 de septiembre de 2016

Estructura de red de un aula Infolab

Mis aulas de Infolab disponen de un SIATIC. Como el SIATIC tiene dos interfaces de red, he conectado:
  • La interfaz eth0 a la VLAN4.
  • La interfaz eth1 a la VLAN1.


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

Organizar la red del IES mediante VLAN's

Todos los centros estamos conectados en la misma Intranet, y, como era de esperar el crecimiento de la red la está convirtiendo en una malla.

Para organizar la red de mi centro, sobre la que, al menos de momento, tengo control..., decidí dividir la red en VLAN's:
  • VLAN1: Intranet.
  • VLAN2: ADSL.
  • VLAN3: Wifi.
  • VLAN4: Infolab.
  • VLAN62: voIP.

No he representado la VLAN2 en el diagrama porque es una red aislada que no se mezcla con la intranet.

Como se puede observar:
  • En la red VLAN3 se conectan los equipos con acceso inalámbrico.
  • En la red VLAN4 se encuentran los Infolaboratorios.
  • Tanto los equipos de la VLAN3 como los de la VLAN4 acceden a los servicios de la VLAN1 a través del firewall pfsense.
De este modo, en el firewall puedo establecer diferentes reglas para controlar el tráfico.

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

Modificado apt-mirror para "mirrorizar" también los repositorios de Linex

En un post de mayo de 2016 vimos cómo crear un mirror local con apt-mirror para los nuevos Ubuntu-Linex enviados a los centros.

Como ya sabéis, en mi opinión, es preferible disponer de un mirror en lugar de utilizar apt-cacher por varias razones y sobre todo, por experiencia (en su día ya usamos apt-cacher en los centros). 

A la vista de los problemas sufridos en los últimos días, he decidido modificar el fichero de configuración de apt-mirror (/etc/apt/mirror.list) para mirrorizar, además de los repositorios de Ubuntu, los de LinEx. A continuación podéis ver el fichero de configuración:

/etc/apt/mirror.list
############# config ##################
#
# set base_path    /var/spool/apt-mirror
#
# set mirror_path  $base_path/mirror
# set skel_path    $base_path/skel
# set var_path     $base_path/var
# set cleanscript $var_path/clean.sh
# set defaultarch  
# set postmirror_script $var_path/postmirror.sh
# set run_postmirror 0
set nthreads     20
set _tilde 0
#set limit_rate 2000k
#
############# end config ##############

#deb http://ftp.us.debian.org/debian unstable main contrib non-free
##deb-src http://ftp.us.debian.org/debian unstable main contrib non-free

# mirror additional architectures
#deb-alpha http://ftp.us.debian.org/debian unstable main contrib non-free
#deb-amd64 http://ftp.us.debian.org/debian unstable main contrib non-free
#deb-armel http://ftp.us.debian.org/debian unstable main contrib non-free
#deb-hppa http://ftp.us.debian.org/debian unstable main contrib non-free
#deb-i386 http://ftp.us.debian.org/debian unstable main contrib non-free
#deb-ia64 http://ftp.us.debian.org/debian unstable main contrib non-free
#deb-m68k http://ftp.us.debian.org/debian unstable main contrib non-free
#deb-mips http://ftp.us.debian.org/debian unstable main contrib non-free
#deb-mipsel http://ftp.us.debian.org/debian unstable main contrib non-free
#deb-powerpc http://ftp.us.debian.org/debian unstable main contrib non-free
#deb-s390 http://ftp.us.debian.org/debian unstable main contrib non-free
#deb-sparc http://ftp.us.debian.org/debian unstable main contrib non-free

#clean http://ftp.us.debian.org/debian

#deb cdrom:[Ubuntu 14.04.3 LTS _Trusty Tahr_ - Beta i386 (20150805)]/ trusty main restricted

# See http://help.ubuntu.com/community/UpgradeNotes for how to upgrade to
# newer versions of the distribution.
deb-i386 http://es.archive.ubuntu.com/ubuntu/ trusty main restricted
deb-amd64 http://es.archive.ubuntu.com/ubuntu/ trusty main restricted

## Major bug fix updates produced after the final release of the
## distribution.
deb-i386 http://es.archive.ubuntu.com/ubuntu/ trusty-updates main restricted
deb-amd64 http://es.archive.ubuntu.com/ubuntu/ trusty-updates main restricted

## N.B. software from this repository is ENTIRELY UNSUPPORTED by the Ubuntu
## team. Also, please note that software in universe WILL NOT receive any
## review or updates from the Ubuntu security team.
deb-i386 http://es.archive.ubuntu.com/ubuntu/ trusty universe
deb-amd64 http://es.archive.ubuntu.com/ubuntu/ trusty universe
deb-i386 http://es.archive.ubuntu.com/ubuntu/ trusty-updates universe
deb-amd64 http://es.archive.ubuntu.com/ubuntu/ trusty-updates universe

## N.B. software from this repository is ENTIRELY UNSUPPORTED by the Ubuntu 
## team, and may not be under a free licence. Please satisfy yourself as to 
## your rights to use the software. Also, please note that software in 
## multiverse WILL NOT receive any review or updates from the Ubuntu
## security team.
deb-i386 http://es.archive.ubuntu.com/ubuntu/ trusty multiverse
deb-amd64 http://es.archive.ubuntu.com/ubuntu/ trusty multiverse
deb-i386 http://es.archive.ubuntu.com/ubuntu/ trusty-updates multiverse
deb-amd64 http://es.archive.ubuntu.com/ubuntu/ trusty-updates multiverse

## N.B. software from this repository may not have been tested as
## extensively as that contained in the main release, although it includes
## newer versions of some applications which may provide useful features.
## Also, please note that software in backports WILL NOT receive any review
## or updates from the Ubuntu security team.
deb-i386 http://es.archive.ubuntu.com/ubuntu/ trusty-backports main restricted universe multiverse
deb-amd64 http://es.archive.ubuntu.com/ubuntu/ trusty-backports main restricted universe multiverse

deb-i386 http://security.ubuntu.com/ubuntu trusty-security main restricted
deb-amd64 http://security.ubuntu.com/ubuntu trusty-security main restricted
deb-i386 http://security.ubuntu.com/ubuntu trusty-security universe
deb-amd64 http://security.ubuntu.com/ubuntu trusty-security universe
deb-i386 http://security.ubuntu.com/ubuntu trusty-security multiverse
deb-amd64 http://security.ubuntu.com/ubuntu trusty-security multiverse

## Uncomment the following two lines to add software from Canonical's
## 'partner' repository.
## This software is not part of Ubuntu, but is offered by Canonical and the
## respective vendors as a service to Ubuntu users.
# deb http://archive.canonical.com/ubuntu trusty partner

## This software is not part of Ubuntu, but is offered by third-party
## developers who want to ship their latest software.
deb-i386 http://extras.ubuntu.com/ubuntu trusty main
deb-amd64 http://extras.ubuntu.com/ubuntu trusty main

# Trusty-oem
deb-i386 http://oem.archive.canonical.com/updates/ trusty-oem public
deb-amd64 http://oem.archive.canonical.com/updates/ trusty-oem public

# trusty-oem-sp1
deb-i386 http://oem.archive.canonical.com/updates/ trusty-oem-sp1 public
deb-amd64 http://oem.archive.canonical.com/updates/ trusty-oem-sp1 public

# trusty-stella-kenting151027
deb-i386 http://hp.archive.canonical.com/updates trusty-stella-kenting151027 public
deb-amd64 http://hp.archive.canonical.com/updates trusty-stella-kenting151027 public

# trusty-stella
deb-i386 http://hp.archive.canonical.com/updates trusty-stella public
deb-amd64 http://hp.archive.canonical.com/updates trusty-stella public

# mirrors linex
deb-i386 http://desarrollo.educarex.es/solointranet/ubuntu/trusty trusty linex
deb-amd64 http://desarrollo.educarex.es/solointranet/ubuntu/trusty trusty linex
deb-i386 http://linex.educarex.es/ubuntu/trusty trusty linex
deb-amd64 http://linex.educarex.es/ubuntu/trusty trusty linex

clean http://es.archive.ubuntu.com/ubuntu/
clean http://security.ubuntu.com/ubuntu/
clean http://extras.ubuntu.com/ubuntu/
clean http://oem.archive.canonical.com/updates/
clean http://hp.archive.canonical.com/updates/
clean http://desarrollo.educarex.es/solointranet/ubuntu/
clean http://linex.educarex.es/ubuntu/
Una observación: Como estamos creando los mirrors en /var/spool/apt-mirror/mirror, no olvidéis crear los enlaces a los nuevos repositorios en /var/www:
ln -s /var/spool/apt-mirror/mirror/desarrollo.educarex.es /var/www/desarrollo.educarex.es
ln -s /var/spool/apt-mirror/mirror/linex.educarex.es /var/www/linex.educarex.es
Publicado por primera vez en http://enavas.blogspot.com.es

sed: Extraer el valor de una variable en un archivo de configuración

Habitualmente utilizamos archivos de configuración en los que definimos pares de valores/variables. Por ejemplo, en el fichero de configuración /etc/puppet/puppet.conf podemos asignar valores a variables de la siguiente manera:
certname=48f8ffda-7ff4-11e6-9d4f-a0369f586859
Si por alguna razón, necesitamos extraer el valor de la variable, no tenemos más que utilizar el comando sed de la siguiente manera:
# sed -n 's|certname=\(.*\)|\1|p' /etc/puppet/puppet.conf
Si observáis el comando sed, veréis que es muy sencillo: 
  • Busco la cadena con el nombre de la variable (en el ejemplo: certname), seguido de un símbolo = y a continuación una cadena de caracteres.
  • Y me quedo con lo que haya a continuación del símbolo =
De este modo, si quisiera obtener el valor de la variable server almacenado en el fichero de configuración /etc/puppet/puppet.conf, tan sólo tendría que cambiar el nombre de la variable en la expresión anterior:
# sed -n 's|server=\(.*\)|\1|p' /etc/puppet/puppet.conf
Publicado por primera vez en http://enavas.blogspot.com.es

lunes, 19 de septiembre de 2016

Chocolatey: Utilizar opciones de instalación

Podemos pasar parámetros de instalación a Chocolatey usando el parámetro -installArgs.
Ejemplo:
C:\Windows\System32> choco install -y puppet -version 3.4.3 -installArgs '"PUPPET_MASTER_SERVER=puppetinstituto"'
Publicado por primera vez en http://enavas.blogspot.com.es

Chocolatey: Instalar una versión concreta de un paquete

Cuando instalamos un paquete desde los repositorios de Chocolatey, se instalará siempre la última versión, a menos que especifiquemos una versión en concreto mediante el parámetro -version.

Ejemplo:
C:\Windows\System32> choco install -y puppet -version 3.4.3
Publicado por primera vez en http://enavas.blogspot.com.es

Actualizar todos los paquetes gestionados mediante Chocolatey excepto alguno en particular

En un un post del viernes día 2 de septiembre de 2016 vimos cómo actualizar todos los paquetes gestionados mediante Chocolatey:
C:\> choco upgrade all -y
Como ya comentamos, en lugar de especificar el nombre de un paquete, utilizamos la palabra reservada all, que representa todos los paquetes.
En cuanto al parámetro -y, lo utilizamos para aceptar la licencia y conseguir que Chocolatey no nos pida confirmación antes de instalar.

Ahora bien, en ocasiones, nos interesa que se actualicen todos los paquetes, excepto alguno en particular. Por ejemplo, supongamos que quiero actualizar todos los paquetes gestionados mediante Chocolatey en el sistema Windows de mis máquinas, pero no quiero que se actualice puppet para que tenga la misma versión que tiene en Ubuntu. En este caso, podría hacer lo siguiente:
C:\> choco upgrade all -y --except=puppet
Y si quisiera añadir varias excepciones, no tendría más que especificar una lista de paquetes separados por comas:
C:\> choco upgrade all -y --except=puppet,vlc,picasa
Publicado por primera vez en http://enavas.blogspot.com.es

lunes, 5 de septiembre de 2016

Controlar la actualización de nuestro Ubuntu

Volvemos de vacaciones y comprobamos que nuestros Ubuntu 14.04 LTS comienzan a mostrar un mensaje a cada usuario que inicia sesión que dice:
"Está disponible una nueva versión de Ubuntu ¿Le gustaría actualizar?"

Ésto es algo normal porque Ubuntu 16.04.1 LTS ya está disponible, pero como estamos seguros de que sembrará dudas en nuestros usuarios, vamos a evitar que se les muestre el mensaje.

Como ya comentó nuestro compañero Francisco Mora, es muy sencillo de solucionar:

El fichero /etc/update-manager/release-upgrades tiene el siguiente contenido para controlar la configuración de actualizaciones:
# Default behavior for the release upgrader.

[DEFAULT]
# Default prompting behavior, valid options:
#
#  never  - Never check for a new release.
#  normal - Check to see if a new release is available.  If more than one new
#           release is found, the release upgrader will attempt to upgrade to
#           the release that immediately succeeds the currently-running
#           release.
#  lts    - Check to see if a new LTS release is available.  The upgrader
#           will attempt to upgrade to the first LTS release available after
#           the currently-running one.  Note that this option should not be
#           used if the currently-running release is not itself an LTS
#           release, since in that case the upgrader won't be able to
#           determine if a newer release is available.
Prompt=lts
Por lo tanto, para solucionar el problema, lo único que tenemos que hacer es cambiar:
Prompt=lts
Por:
Prompt=never
De manera que el fichero nos quedará así:
# Default behavior for the release upgrader.

[DEFAULT]
# Default prompting behavior, valid options:
#
#  never  - Never check for a new release.
#  normal - Check to see if a new release is available.  If more than one new
#           release is found, the release upgrader will attempt to upgrade to
#           the release that immediately succeeds the currently-running
#           release.
#  lts    - Check to see if a new LTS release is available.  The upgrader
#           will attempt to upgrade to the first LTS release available after
#           the currently-running one.  Note that this option should not be
#           used if the currently-running release is not itself an LTS
#           release, since in that case the upgrader won't be able to
#           determine if a newer release is available.
Prompt=never
Para aplicar esta configuración automáticamente a todas las máquinas, tan sólo tenemos que crear un módulo puppet que lo haga. Éste módulo es muy sencillo; más aún si utilizamos el tipo definido por el usuario line.pp con las modificaciones que hice para incluir definiciones de variables en ficheros de configuración.  Si lo utilizáis, el módulo puppet es así de simple:
class puppet_prompt_upgrades {
  line { "prompt_upgrades":
     file => "/etc/update-manager/release-upgrades",
     line => "Prompt=never",
     ensure => "variable"
  }
}
Publicado por primera vez en http://enavas.blogspot.com.es

viernes, 2 de septiembre de 2016

Actualizar todos los paquetes gestionados mediante Chocolatey

En un post de julio de 2016,os hablé de Chocolatey, un gestor de paquetes tipo apt-get para Windows que nos va a resultar tremendamente útil ahora que tenemos que gestionar equipos duales.

Puesto que es algo realmente sencillo, en este post, tan sólo os voy a mostrar cómo actualizar todos los paquetes gestionados mediante Chocolatey:
C:\> choco upgrade all -y
Si os fijáis, en lugar de especificar el nombre de un paquete, estamos utilizando la palabra reservada all, que representa todos los paquetes.
En cuanto al parámetro -y, nos sirve para que Chocolatey no nos pida confirmación antes de instalar.
Publicado por primera vez en http://enavas.blogspot.com.es

Gestión básica de paquetes desde la línea de comandos en pfSense

pfSense es una distribución de freeBSD personalizada para utilizar como firewall/router que habitualmente gestionamos mediante un interfaz web (webConfigurator), pero con la que también podemos trabajar desde la línea de comandos, ya sea desde el interfaz local o conectados vía ssh. 

Para gestionar paquetes de freeBSD y por extensión de pfSense, no tenemos más que utilizar el comando pkg.

De este modo, si queremos actualizar los índices de los repositorios, ejecutaremos:
# pkg update
Si queremos comprobar si un paquete se encuentra en los repositorios, utilizaremos pkg find. Por ejemplo:
# pkg find nano
De este modo, comprobaremos si el paquete nano se encuentra en los repositorios.
Una vez comprobado que existe, es muy fácil instalarlo:
# pkg install nano
Publicado por primera vez en http://enavas.blogspot.com.es

jueves, 1 de septiembre de 2016

Error de llave pública 1397BC53640DB551 de Google Chrome

Si hacéis un apt-get update o un aptitude update y obtenéis un error como el siguiente:
W: No existe ninguna clave pública disponible para los siguientes identificadores de clave: 
1397BC53640DB551
Significa que  no tenéis la clave pública del repositorio de Google Chrome.

Para solucionar el problema, lo único que tenéis que hacer es descargarla y añadirla a vuestro anillo de claves:
# wget -q -O - https://dl.google.com/linux/linux_signing_key.pub | sudo apt-key add -
Publicado por primera vez en http://enavas.blogspot.com.es