Mostrando entradas con la etiqueta linux. Mostrar todas las entradas
Mostrando entradas con la etiqueta linux. Mostrar todas las entradas

martes, 27 de octubre de 2015

Instalar wiithon en Debian Jessie

0 comentarios
En un post de 2009 os hablé de WBFS, y un tiempo después vimos como instalar wiithon en Debian Squeeze

Wiithon es una herramienta GPL que sirve para trabajar con backups de juegos Wii, permitiendo añadirlos a un disco duro, extraerlos, etc. 

Esta herramienta ha evolucionado y mejorado aún más con el tiempo. La última versión que podemos encontrar en launchpad es la 1.32, publicada en noviembre de 2014.


Disponer de wiithon en Debian Jessie es muy sencillo puesto que tan sólo hay que instalar el paquete Debian correspondiente a nuestra arquitectura:
Publicado por primera vez en http://enavas.blogspot.com.es

lunes, 26 de octubre de 2015

Actualizar Debian Wheezy automáticamente mediante unattended-upgrades

0 comentarios
En un post de mayo de 2012 os mostré cómo actualizar los paquetes de Debian Squeeze automáticamente utilizando unattended-upgrades, una aplicación para realizar instalaciones automáticas de actualizaciones de seguridad, ideal para mantener actualizado el software de nuestro equipo de forma desatendida.

Como desde la versión que teníamos instalada en Debian Squeeze han cambiado algunas cosillas (por ejemplo: ya no corre como demonio), vamos a dar un repaso de nuevo a esta herramienta.

Instalar unattended-upgrades en Debian Wheezy sigue siendo igual de sencillo, puesto que el paquete se encuentra en los repositorios:
# apt-get install unattended-upgrades
Una vez instalado, echaremos un vistazo al principal fichero de configuración: /etc/apt/apt.conf.d/50unattended-upgrades:
// Automatically upgrade packages from these origin patterns
Unattended-Upgrade::Origins-Pattern {
// Archive or Suite based matching:
// Note that this will silently match a different release after
// migration to the specified archive (e.g. testing becomes the
// new stable).
// "o=Debian,a=stable";
// "o=Debian,a=stable-updates";
// "o=Debian,a=proposed-updates";
"origin=Debian,archive=stable,label=Debian-Security";
"origin=Debian,archive=oldstable,label=Debian-Security";
};

// List of packages to not update
Unattended-Upgrade::Package-Blacklist {
// "vim";
// "libc6";
// "libc6-dev";
// "libc6-i686";
};

// This option allows you to control if on a unclean dpkg exit
// unattended-upgrades will automatically run
// dpkg --force-confold --configure -a
// The default is true, to ensure updates keep getting installed
//Unattended-Upgrade::AutoFixInterruptedDpkg "false";

// Split the upgrade into the smallest possible chunks so that
// they can be interrupted with SIGUSR1. This makes the upgrade
// a bit slower but it has the benefit that shutdown while a upgrade
// is running is possible (with a small delay)
//Unattended-Upgrade::MinimalSteps "true";

// Install all unattended-upgrades when the machine is shuting down
// instead of doing it in the background while the machine is running
// This will (obviously) make shutdown slower
//Unattended-Upgrade::InstallOnShutdown "true";

// Send email to this address for problems or packages upgrades
// If empty or unset then no email is sent, make sure that you
// have a working mail setup on your system. A package that provides
// 'mailx' must be installed. E.g. "user@example.com"
//Unattended-Upgrade::Mail "root";

// Set this value to "true" to get emails only on errors. Default
// is to always send a mail if Unattended-Upgrade::Mail is set
//Unattended-Upgrade::MailOnlyOnError "true";

// Do automatic removal of new unused dependencies after the upgrade
// (equivalent to apt-get autoremove)
//Unattended-Upgrade::Remove-Unused-Dependencies "false";

// Automatically reboot *WITHOUT CONFIRMATION* if a
// the file /var/run/reboot-required is found after the upgrade
//Unattended-Upgrade::Automatic-Reboot "false";

// Use apt bandwidth limit feature, this example limits the download
// speed to 70kb/sec
//Acquire::http::Dl-Limit "70";
Este fichero es muy fácil de entender, sobre todo teniendo en cuenta los comentarios que explican los parámetros. Como podéis comprobar, viene configurado para realizar tan sólo las actualizaciones de Debian-Security, pero podemos modificarlo para que se actualicen de forma desatendida los paquetes de todos nuestros repositorios.

El siguiente bloque del fichero de configuración permite definir los repositorios desde los que queremos actualizar automáticamente los paquetes:
// Automatically upgrade packages from these origin patterns
Unattended-Upgrade::Origins-Pattern {
// Archive or Suite based matching:
// Note that this will silently match a different release after
// migration to the specified archive (e.g. testing becomes the
// new stable).
// "o=Debian,a=stable";
// "o=Debian,a=stable-updates";
// "o=Debian,a=proposed-updates";
"origin=Debian,archive=stable,label=Debian-Security";
"origin=Debian,archive=oldstable,label=Debian-Security";
};
En este bloque podemos añadir nuevos patrones que permitan realizar instalaciones desatendidas desde otros repositorios. Para especificar repositorios utilizaremos los siguientes campos:
  • origin (formato corto: o).
  • label (formato corto: l).
  • archive (formato corto: a).
  • suite.
  • component (formato corto: c).
  • site.
Podemos encontrar los valores de cada uno de los campos de nuestros repositorios en los ficheros _Release alojados en /var/lib/apt/lists/.

Por ejemplo, supongamos que deseamos actualizar los paquetes del repositorio de Mozilla. Como ya tenemos configurado este repositorio en nuestra máquina, obtenemos las primeras líneas del siguiente archivo, donde veremos los datos que vamos a necesitar:
# head /var/lib/apt/lists/ldap_mozilla-backports_dists_wheezy-backports_Release
Origin: Debian Mozilla Team
Label: Debian Mozilla Team
Suite: wheezy-backports
Codename: wheezy-backports
Date: Fri, 16 Oct 2015 05:45:52 UTC
Architectures: i386 amd64
Components: iceweasel-release iceweasel-esr
Description: Debian Mozilla team APT archive for wheezy-backports
MD5Sum:
8fe44fc8853db9b7df27b21016257761 86467 iceweasel-release/binary-i386/Packages
Viendo la salida del comando anterior, podríamos construir un patrón de origen como el siguiente:
        "o=Debian Mozilla Team,suite=wheezy-backports";
Y añadirlo al fichero /etc/apt/apt.conf.d/50unattended-upgrades, para que se actualicen también los paquetes del repositorio de Mozilla de forma desatendida:
// Automatically upgrade packages from these origin patterns
Unattended-Upgrade::Origins-Pattern {
// Archive or Suite based matching:
// Note that this will silently match a different release after
// migration to the specified archive (e.g. testing becomes the
// new stable).
// "o=Debian,a=stable";
// "o=Debian,a=stable-updates";
// "o=Debian,a=proposed-updates";
"origin=Debian,archive=stable,label=Debian-Security";
"origin=Debian,archive=oldstable,label=Debian-Security";
"o=Debian Mozilla Team,suite=wheezy-backports";
};
Por otra parte, "descomentaremos" las líneas de las opciones que nos interese aplicar.
Por ejemplo, sería interesante aplicar esta opción para solucionar el problema de que en una ejecución anterior de dpkg se hubiera interrumpido el proceso:
Unattended-Upgrade::AutoFixInterruptedDpkg "true";

Una vez hecho ésto, creamos el fichero /etc/apt/apt.conf.d/02periodic con el siguiente contenido:
// Enable the update/upgrade script (0=disable)
APT::Periodic::Enable "1";

// Do "apt-get update" automatically every n-days (0=disable)
APT::Periodic::Update-Package-Lists "1";

// Do "apt-get upgrade --download-only" every n-days (0=disable)
APT::Periodic::Download-Upgradeable-Packages "1";

// Run the "unattended-upgrade" security upgrade script
// every n-days (0=disabled)
// Requires the package "unattended-upgrades" and will write
// a log in /var/log/unattended-upgrades
APT::Periodic::Unattended-Upgrade "1";

// Do "apt-get autoclean" every n-days (0=disable)
APT::Periodic::AutocleanInterval "7";
Este fichero nos servirá para configurar las actualizaciones periódicas. Veamos lo que significa cada opción con un ejemplo: 
  • APT::Periodic::Enable "1";  Activamos las actualizaciones automáticas poniendo el valor a 1 o las desactivamos poniendo el valor a 0.
  • APT::Periodic::Update-Package-Lists "1"; Hacemos un apt-get update. Si ponemos el valor a 0 lo desactivamos.
  • APT::Periodic::Download-Upgradeable-Packages "1"; Descargamos los paquetes actualizables. Si ponemos el valor a 0 lo desactivamos.
  • APT::Periodic::AutocleanInterval "7"; Hacemos un apt-get autoclean cada 7 días. Si ponemos el valor a 0 lo desactivamos.
  • APT::Periodic::Unattended-Upgrade "1"; Ejecutar el script"unattended-upgrade" cada día. Si ponemos el valor a 0 lo desactivamos.    
unattended-upgrades se ejecuta mediante cron (/etc/cron.daily/apt). No obstante, si queremos, podemos forzar la ejecución manualmente mediante el script unattended-upgrade:
# unattended-upgrade
Además, podemos ejecutar unattended-upgrade en modo debug:
# unattended-upgrade -d
O simular la ejecución de unattended-upgrade sin llegar a actualizar:
# unattended-upgrade -d --dry-run
Publicado por primera vez en http://enavas.blogspot.com.es

sábado, 10 de octubre de 2015

¿Cómo puedo iniciar sesión en un portátil del IES si nunca antes lo he hecho y no estoy conectado a la red?

0 comentarios
Ésta es una pregunta que recientemente me han hecho: ¿Cómo puedo iniciar sesión en un portátil del IES si nunca antes lo he hecho y no estoy conectado a la red?

La solución es sencilla: Vete a un terminal de texto con <ctrl>+<alt>+<f1> y cachea las credenciales del usuario de ldap con el que quieres iniciar sesión. Por ejemplo:
# cc_test -store any enavas mipassword
Luego vuelve al terminal gráfico e inicia sesión.

¿Por qué es posible hacer ésto? Bueno, pues básicamente por cuatro cosas:
  • Nuestros usuarios inician sesión mediante las cuentas del servidor ldap
  • Utilizamos nscd para cachear la información de usuarios y grupos y en la configuración de nscd tenemos definido un positive-time-to-live de 90 días
    positive-time-to-live
    .
  • Utilizamos libpam-ccreds para cachear las credenciales de un usuario localmente.
  • Utilizamos el módulo libpam_mkhomedir para crear el directorio home cuando un nuevo usuario inicia sesión.
Publicado por primera vez en http://enavas.blogspot.com.es

miércoles, 3 de junio de 2015

Eliminar la coincidencia de subcadena más larga de una cadena en bash

0 comentarios
Como os mostré esta mañana, es muy fácil eliminar la coincidencia de subcadena más corta de una cadena en bash. Puesto que es igual de sencillo, en este post vamos a ver cómo eliminar la subcadena más larga en una cadena.

Para eliminar la coincidencia de subcadena más larga buscando desde el principio de una cadena, utilizaremos la siguiente sintaxis:
${cadena##subcadena}
Así mismo, para eliminar la coindencia de subcadena más larga buscando desde el final de una cadena, utilizaremos lo siguiente:
${cadena%%subcadena}

Siguiendo con el ejemplo del anterior post: Supongamos que tengo una variable con el siguiente valor:
impresora="EPSON-EPL5900-1234"
Y esta variable representa el nombre de la impresora: "EPSON-EPL5900" junto con el número de trabajo en el spool "1234".

Si quisiera quedarme tan sólo con el identificador del trabajo "1234" eliminando "EPSON-EPL5900", podría hacerlo de la siguiente manera:
# echo ${impresora##*-}

1234

Y si lo que quisiera fuera quedarme tan sólo con la marca de la impresora "EPSON" eliminando "EPL5900-1234", podría hacerlo de la siguiente manera:
# echo ${impresora%%-*}

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

martes, 2 de junio de 2015

Eliminar la coincidencia de subcadena más corta de una cadena en bash

0 comentarios
Cuando utilizamos un signo dólar seguido de un nombre de variable en Bash, el shell sustituye el nombre de la variable por su valor. A esta característica se le llama expansión de parámetros.

La expansión de parámetros, nos permite manipular cadenas. En este post vamos a ver cómo eliminar la subcadena más corta en una cadena.

Para eliminar la coincidencia de subcadena más corta buscando desde el principio de una cadena, utilizaremos lo siguiente:
${cadena#subcadena}
Para eliminar la coindencia de subcadena más corta buscando desde el final de una cadena, utilizaremos lo siguiente:
${cadena%subcadena}

Un ejemplo: Supongamos que tengo una variable con el siguiente valor:
impresora="EPSON-EPL5900-1234"
Y esta variable representa el nombre de la impresora: "EPSON-EPL5900" junto con el número de trabajo en el spool "1234".

Si quisiera quedarme con el valor "EPL5900-1234" eliminando "EPSON", podría hacerlo de la siguiente manera:
# echo ${impresora#*-}

EPL5900-1234

Y si lo que quisiera fuera quedarme tan sólo con el nombre de la impresora "EPL5900-1234" eliminando "EPSON", podría hacerlo de la siguiente manera:
# echo ${impresora%-*}

EPSON-EPL5900
Es algo realmente sencillo y potente a la vez.
Publicado por primera vez en http://enavas.blogspot.com.es

lunes, 25 de mayo de 2015

Control de acceso wifi en el IES utilizando PfSense

0 comentarios
Aprovechando que algún compañero de otro centro me ha vuelto a preguntar qué control de acceso inalámbrico tengo implantado en mi centro, y que muchos otros compañeros me siguen, voy a explicarlo aquí para que a todo el mundo le sirva de orientación: 
 
Para controlar el acceso inalámbrico a la Intranet del centro sigo utilizando freeradius directamente. Esto quiere decir que para poder conectarse en esta red, habrá que configurar un acceso WPA2 Enterprise con EAP/TTLS + PAP en lo clientes. En el blog hay un post de febrero de 2012 con un documento en el que explicaba cómo instalar y configurar freeradius para lograrlo.

Ahora bien, como en un futuro se pretende implantar el sistema BYOD (Bring Your Own Device), que en castellano quiere decir "Trae tu propio dispositivo", y aún no nos han contando cómo se va a implantar, decidí adelantarme y montar mi propio sistema de control de acceso, en lugar de esperar a que se implante en algún momento, pero, sobre todo, motivado por dos razones:
  • Porque en el centro ya me habían pedido poder conectar dispositivos personales ajenos al mismo vía wifi, algo que no podía realizar por disponer del tiempo suficiente para llevar a cabo un proyecto como éste que requiere bastante trabajo y pruebas.
  • Y porque en estos momentos cuento con la ayuda de dos alumnas en prácticas, Raquel y Jennifer, que me están ayudando muchísimo a ponerlo en marcha y probarlo.
La idea se basa en utilizar PfSense, un firewall basado en FreeBSD, para crear un portal cautivo que permita a los usuarios acceder a una red privada que les proporcione un acceso a internet.


De este modo, los usuarios se podrán conectar a la red mediante diferentes puntos de acceso abiertos y tendrán que iniciar sesión para poder navegar, como puede verse en la siguiente imagen:


Se podrá acceder de dos modos:
  • Mediante el usuario y la contraseña con que está dado de alta en el servidor ldap del centro.
  • Mediante un ticket que se podrá generar para dar un acceso limitado en tiempo a usuarios ajenos al centro.
El servidor pfSense tendrá dos interfaces:
  • Una interfaz LAN para dar servicio a clientes inalámbricos en la red 192.168.0.0
  • Una interfaz WAN que servirá para dar acceso a internet a los equipos que se conecten a través de la LAN.


El servidor pfSense, al que hemos llamado firewall, contactará con el servidor freeradius para autorizar a los usuarios que intenten conectar vía wifi. A su vez, el servidor freeradius contactará con el servidor ldap del centro para validar dichos usuarios. Ésto quiere decir que dispondremos de un sistema de control de acceso freeradius+pfsense combinado, pudiendo establecer reglas de control en freeradius y en pfsense.

Por ejemplo, podríamos hacer que los usuarios de un determinado grupo tuvieran acceso durante el horario de mañana y los de otro grupo durante el horario de tarde mediante controles en freeradius y limitar el tiempo que pueden estar conectados mediante el portal cautivo de pfsense.

El firewall pfSense tiene configurado un servidor DHCP que proporciona IP's a los clientes conectados en la LAN 192.168.0.0

Y os preguntaréis: ¿Cómo hago para que los puntos de acceso presten servicio en la red 192.168.0.0 si en el centro tan sólo tengo una red 172.x.x.x? Muy sencillo: Aprovechando que los switches disponen de soporte de VLAN, crearemos una VLAN a través de los switches de nuestro centro a la que se encontrará conectado el firewall en la interfaz LAN.
 Ésto es algo que requerirá un cierto trabajo por vuestra parte, puesto que probablemente no tendréis un mapa de red de vuestro centro en el que se identifiquen al menos los puertos que interconectan los switches, pero tampoco es difícil de identificar si examináis las tablas de enrutamiento de vuestros switches y disponéis de un tester de red. En mi caso hice un mapa de red cuando estuve configurando la telefonía IP con nuestro compañero Javi, de telecomunicaciones.

Por otra parte, he aprovechado que la mayoría de los puntos de acceso de que dispongo tienen soporte de VLAN para hacer que un mismo punto de acceso preste servicio en la VLAN por defecto del centro, por un lado y en la VLAN para dispositivos ajenos por el otro.
Publicado por primera vez en http://enavas.blogspot.com.es

jueves, 21 de mayo de 2015

WinFF: Conversor de vídeo desde el entorno gráfico

0 comentarios
Muchas veces convertimos vídeos utilizando ffmpeg desde la línea de comandos. Si queréis convertir vuestros vídeos desde el entorno gráfico, podéis utilizar WinFF, un GUI de ffmpeg que os permitirá convertir un vídeo de un formato a otro de una forma fácil,  y rápida, en un solo paso.

Esta herramienta se encuentra disponible tanto para Linux como para Windows.

La instalación en Debian es muy sencilla, puesto que el paquete de instalación se encuentra en los repositorios:
# apt-get install winff
Publicado por primera vez en http://enavas.blogspot.com.es

jueves, 9 de abril de 2015

Otra versión del script para actualizar el plugin de flash

0 comentarios
Como en el shell hay muchas formas de hacer lo mismo, a continuación muestro otra versión del script para actualizar el plugin de flash mediante el paquete flashplugin-nonfree. 

Este script, al igual que el que publiqué en febrero, compara la versión del plugin instalado con la última versión disponible, y, si son distintos, lo actualiza:
#!/bin/bash
#
# Actualizar el plugin de flash si hay una nueva versión
# Esteban M. Navas Martín
# 09/04/2015

# Instalamos el paquete flashplugin-nonfree, si no está instalado aún
dpkg -l | grep ^"ii flashplugin-nonfree" > /dev/null || apt-get -y install flashplugin-nonfree

versiones=`update-flashplugin-nonfree --status|grep -oiE '([0-9]{1,3}\.){3}[0-9]{1,3}'`
version=(${versiones// / })

if [ "${version[0]}" != "${version[1]}" ]; then
update-flashplugin-nonfree --install
fi
https://copy.com/wh6u8R779bgeLN8u

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

martes, 24 de marzo de 2015

chntpw: Offline NT Password & Registry Editor

0 comentarios
chntpw es una herramienta que nos servirá para resetear la password de usuarios Windows, desbloquear cuentas y promocionar usuarios.

Podemos instalar chntpw desde los repositorios de Debian para utilizarla en máquinas con Linux y Windows. La versión de los repositorios de Debian es la 0.99. Si queréis la versión 1.0, podéis descargarla desde repositorios alternativos:
Si ejecutáis chntpw, podéis ver los diferentes parámetros disponibles:
# chntpw 
chntpw version 1.00 140201, (c) Petter N Hagen
chntpw: change password of a user in a Windows SAM file,
or invoke registry editor. Should handle both 32 and 64 bit windows and
all version from NT3.x to Win8.1
chntpw [OPTIONS] [systemfile] [securityfile] [otherreghive] [...]
-h This message
-u Username or RID (0x3e9 for example) to interactively edit
-l list all users in SAM file and exit
-i Interactive Menu system
-e Registry editor. Now with full write support!
-d Enter buffer debugger instead (hex editor),
-v Be a little more verbose (for debuging)
-L For scripts, write names of changed files to /tmp/changed
-N No allocation mode. Only same length overwrites possible (very safe mode)
-E No expand mode, do not expand hive file (safe mode)

Usernames can be given as name or RID (in hex with 0x first)

See readme file on how to get to the registry files, and what they are.
Source/binary freely distributable under GPL v2 license. See README for details.
NOTE: This program is somewhat hackish! You are on your own!
Y si queréis descargarlo para CD o USB:
  • cd140201.zip (~18MB) – Bootable CD image. (md5sum: f274127bf8be9a7ed48b563fd951ae9e)
  • usb140201.zip (~18MB) – Files for USB install (md5sum: a60dbb91016d93ec5f11e64650394afb)
Publicado por primera vez en http://enavas.blogspot.com.es

Resetear contraseñas de usuarios Windows

0 comentarios
Un método muy utilizado para resetear las contraseñas de usuarios Windows, es el de dar el cambiazo de la aplicación que activa las sticky keys por un terminal de línea de comandos, algo bastante sencillo de realizar en máquinas donde tenemos instalado tanto Linux como Windows. En cualquier caso, si se trata de una máquina donde sólo se encuentra instalado Windows, podemos arrancar con un CD Live de Linux.

Veamos cómo hacerlo paso a paso:

Primero.- Arrancamos linux.

Segundo.- Una vez arrancado linux, obtenemos la lista de particiones:
# fdisk -l

Disk /dev/sda: 1000.2 GB, 1000204886016 bytes
255 heads, 63 sectors/track, 121601 cylinders, 1953525168 sectores en total
Units = sectores of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Identificador del disco: 0x0003eea8

Disposit. Inicio Comienzo Fin Bloques Id Sistema
/dev/sda1 * 2048 718847 358400 7 HPFS/NTFS/exFAT
/dev/sda2 718848 692779007 346030080 7 HPFS/NTFS/exFAT
/dev/sda3 * 692779008 693393407 307200 83 Linux
/dev/sda4 693393408 1953525167 630065880 5 Extendida
/dev/sda5 693395456 798253055 52428800 83 Linux
/dev/sda6 798255104 903112703 52428800 83 Linux
/dev/sda7 903114752 911503359 4194304 82 Linux swap / Solaris
/dev/sda8 911505408 1435793407 262144000 83 Linux
/dev/sda9 1435795456 1953525167 258864856 7 HPFS/NTFS/exFAT

Si os dáis cuenta, en la máquina que he usado, hay tres particiones windows:
  • /dev/sda1
  • /dev/sda2
  • /dev/sda9
La partición /dev/sda1 está marcada como bootable. Por lo tanto, será la partición de arranque de Windows.Y /dev/sda2 será la partición donde se encuentra instalado el sistema.

Tercero.- Montamos la partición /dev/sda2:
# mount /dev/sda2 /mnt/
Cuarto.- Una vez montada la partición, entramos en el directorio de windows:
# cd /mnt/windows/system32
Quinto.- Hacemos una copia del archivo sethc.exe ((stickykeys) )
# mv sethc.exe sethc.bak
Sexto.- Copiamos el terminal cmd.exe como sethc.exe:
# cp cmd.exe sethc.exe
De este modo, cuando activemos las stickykeys (presionando la tecla shift 5 veces seguidas), lo que estaremos haciendo será lanzar una bonita consola con privilegios de administrador que nos permitirá hacer lo que queramos.

Séptimo.- Desmontamos /dev/sda2:
# umount /dev/sda2 /mnt/
Octavo.- Reiniciamos el equipo y arrancamos en Windows.
# reboot
Noveno.- En la pantalla de login de windows pulsamos 5 veces la tecla SHIFT y aparecerá la pantalla terminal.
Décimo.- Ejecutamos el comando control userpasswords2 que nos permitirá cambiar la password de los usuarios:

C:\Windows\system32\control userpasswords2

Seleccionamos el usuario y le cambiamos la passwd.
Publicado por primera vez en http://enavas.blogspot.com.es

martes, 14 de octubre de 2014

El shell de linux: Abrir o cerrar el CDROM desde la línea de comandos

0 comentarios
Si habéis leído el post en el que mostraba un script para expulsar el CD/DVD cuando el usuario cierra su sesión, os habréis dado cuenta de que para expulsar el disco uso el comando eject de la siguiente manera:
# eject /dev/cdrom
Si en lugar de expulsarlo, lo que queréis es cerrar la bandeja, tan sólo tenéis que ejecutar el comando anterior con el parámetro -t:
# eject -t /dev/cdrom
Publicado por primera vez en http://enavas.blogspot.com.es

viernes, 10 de octubre de 2014

Script dvdject para evitar que el usuario olvide el disco

0 comentarios
En ocasiones, algunos usuarios olvidan el disco en la unidad de DVD y cuando llega el siguiente usuario, no puede extraer el disco porque al no haberlo montado él, el sistema no se lo permite.

La solución por la que he optado para resolver el problema ha sido colocar un script en /usr/local/bin/ al que he llamado dvdeject que se inicia cuando el usuario cierra su sesión, comprueba si el CD/DVD está montado y si lo está, lo expulsa. 

Como podéis comprobar, el script es muy sencillo:

#!/bin/bash
#
# Este script se pone en marcha desde /etc/gdm3/PostSession/Default
#
# Su función es expulsar el CD/DVD introducido por el usuario al cerrar la sesión
# Soluciona el problema de que un usuario se olvide el CD/DVD que ha usado
#
# Esteban M. Navas Martín
# 27/05/2014

montado=$(mount|grep "/dev/sr"|cut -f1 -d" ")

if [ $montado ]; then
eject $montado
fi

Podéis descargarlo desde aquí.

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

viernes, 3 de octubre de 2014

Limpiar las credenciales cacheadas de los usuarios de una máquina

0 comentarios
En enero de 2012 escribí un post donde explicaba cómo gestionar las credenciales cacheadas de un usuario en un portátil.

Cuando hacemos limpieza en un momento dado, como por ejemplo, en el script de inicio primer-arranque, sería conveniente limpiar las credenciales de usuario cacheadas previamente.

El siguiente script  obtiene un listado de todas las credenciales cacheadas y las elimina:


#!/bin/bash

# Instalamos libpam-ccreds si no estaba instalado
dpkg -l | grep ^"ii  libpam-ccreds" > /dev/null || apt-get -y install libpam-ccreds
for usuario in `cc_dump |awk '{print $3}' | sed '1,2d'`; do
    cc_test -update any $usuario -
done
Publicado por primera vez en http://enavas.blogspot.com.es

martes, 27 de mayo de 2014

Script addFNMTfirefox: Añadir el certificado de la FNMT a los perfiles de Firefox de alumnos y profesores

0 comentarios
En mi cuenta de GitHub he dejado un script para añadir el certificado de la FNMT a los perfiles de Firefox de alumnos y profesores. Aquí tenéis el código, por si queréis echarle un vistazo:


Y el enlace de descarga directa:
https://raw.githubusercontent.com/algodelinux/addFNMTfirefox/master/addFNMTfirefox.sh

También he añadido el archivo con el certificado actual de la FNMT, por si lo queréis utilizar.
Publicado por primera vez en http://enavas.blogspot.com.es

El shell de linux: Obtener la lista de particiones de un dispositivo de almacenamiento

0 comentarios
Ésta es la combinación de comandos que uso habitualmente cuando estoy haciendo algún script en el que necesito detectar las particiones de un dispositivo de almacenamiento conectado al ordenador, ya sea un disco duro o dispositivo USB:
# fdisk -l /dev/sdX | grep -v -e 'Disk' -e 'Disco' | grep '/dev/sd' | awk '{print $1}'
Publicado por primera vez en http://enavas.blogspot.com.es

El shell de linux: Obtener la lista de dispositivos de almacenamiento detectados

0 comentarios
Ésta es la combinación de comandos que uso habitualmente cuando estoy haciendo algú script en el que necesito detectar los dispositivos de almacenamiento conectados al ordenador, ya sean discos duros o dispositivos USB:
# fdisk -l 2>/dev/null | grep -i -e "Disk \/" -e "Disco \/" | grep -v "\/dev\/dm" | awk '{print $2}' | sed -e 's/://g'
Publicado por primera vez en http://enavas.blogspot.com.es

viernes, 23 de mayo de 2014

Suspender servidores LTSP para reducir el consumo de energía y evitar un calentamiento innecesario

0 comentarios
Lo más habitual en los centros es encender los servidores LTSP de forma automática a primera hora y mantenerlos encendidos durante la mañana para evitar esperas cada vez que un profesor quiera iniciar sesión. El problema es que los servidores de terminales no van a estar en uso el 100% de la jornada y una parte del tiempo se encontrarán ociosos, consumiendo energía innecesariamente.

Para intentar reducir este consumo de energía y evitar que los equipos se calienten estando encendidos sin utilizarse, he preparado un script que, con una tarea cron, se ejecutará cada 15 minutos y comprobará si hay un usuario logueado en el entorno gráfico, de manera que:
  • Si hay un usuario en el entorno gráfico, no hará nada.
  • Si no hay ningún usuario, comprobará el tipo de aula: 
    • all: Aula con terminales y/o portátiles.
    • thinclients: Aula con terminales.
    • laptops: Aula con thinclients.
    • Si es un aula de terminales, ejecutará el script /usr/sbin/apagaterminales.sh que apaga los thinclients antes de suspender el servidor LTSP.
    • Suspenderá el servidor LTSP.
El código del script es muy sencillo, fundamentalmente porque utiliza otro script que ya tengo en el sistema para apagar los terminales (/usr/sbin/apagaterminales.sh) y aprovecha facter para comprobar el tipo de aula (En mi centro tengo definida una "variable" a la que he llamado clients en el fichero /etc/escuela2.0 para comprobar si el aula tiene thinclients o portátiles).

Para apagar los terminales utilizo pm-suspend, que se encuentra instalado en los servidores LTSP.
cat /usr/local/sbin/suspende.sh
#!/bin/bash
# Esteban M. Navas
# IES Valle del Jerte - Plasencia
# Fecha creación: 20/05/2014
# Fecha última modificación: 23/05/2014

# suspende.sh -> Apaga los terminales de un aula y suspende el equipo. Para apagar los terminales
# utilizamos el script /usr/sbin/apagaterminales.sh y la herramienta pm-suspend que se encuentra instalada en los
# servidores LTSP
#
# La idea es utilizar este script como tarea cron de forma que se ejecute cada cierto tiempo

# Si hay un usuario logueado en el terminal :0, no hacemos nada y finalizamos
if [ $(/usr/bin/w|/bin/grep ":0" | /usr/bin/cut -f1 -d" ") ]; then
exit 0
fi

clientes=`facter clients`

# Si no hay un usuario logueado, apagamos los terminales
if [ $clientes = "all" ] || [ $clientes = "thinclients" ]; then
/usr/sbin/apagaterminales.sh
fi

# Si no hay un usuario logueado en el terminal :0 suspendemos el equipo
/usr/sbin/pm-suspend &
La tarea cron que ejecuta el script es muy simple y se puede poner vía puppet:
cat /etc/cron.d/suspende

# Check every 15 minutes if no user logged and suspend
*/15 * * * * root /usr/local/sbin/suspende.sh

He estado haciendo pruebas en un servidor y parece que todo funciona correctamente. Así que probaré en algún aula más y si todo va bien, pasaré la tarea para todos los servidores LTSP.

Tan sólo me he encontrado con un inconveniente: Por alguna razón, a la hora de reanudar el equipo, si queréis hacerlo pulsando el teclado, es necesario que éste se encuentre conectado mediante PS2. Mediante USB, por defecto, no funciona la reanudación. Supongo que habría que hacer pruebas y configurarlo, pero por no perder más tiempo y tener el sistema operativo lo antes posible, sobre todo ahora que comienza a hacer calor, he conectado todos los teclados de los servidores LTSP mediante PS2.
Publicado por primera vez en http://enavas.blogspot.com.es

Consultar las dependencias de un paquete en Debian

0 comentarios
Cuando queremos consultar las dependencias de un paquete que se encuentra en los repositorios, utilizamos el siguiente comando:
apt-cache show paquete
Ahora bien, si el paquete lo tenemos descargado en el equipo, utilizaremos otro comando:
dpkg-deb -I paquete.deb
Publicado por primera vez en http://enavas.blogspot.com.es

jueves, 15 de mayo de 2014

Configurar el servidor nfs del centro como puerta de enlace + squid

0 comentarios
En un post anterior os mostraba cómo he configurando los dos servidores de mi centro para tener una alta disponibilidad de servicios. Además, he instalado Monit en todos los servidores para monitorizar servicios y las temperaturas de la placa base, cpu y disco duro de cada uno de ellos. 

Pues bien, el otro día, monitorizando el servidor ldap he observado que los dos discos duros instalados en él tienen una temperatura demasiado alta (uno de ellos está cerca de los 45ºC), sobre todo si los comparamos con las temperaturas de los discos duros de los servidores LTSP (en torno a los 30-35ºC). Creo que el servidor de ldap tiene un problema fundamental y es que la caja es demasiado pequeña y no ventila bien. Además los ventiladores también son pequeños y los discos duros están justo uno encima del otro, por lo que se dan calorcito mutuamente.

Como tengo un ordenador que me trajo un compañero con una caja tipo torre más grande con varios ventiladores de 80x80mm, pensé: Voy a intercambiar  las cajas entre ambos ordenadores para reducir la temperatura de los componentes: Discos duros, placa base y procesador. Pero hay un problema. ¿Cuándo lo hago sin detener los servicios? Si el servidor ldap está funcionando siempre y además es la puerta de enlace... Así que revisé mi esquema y pensé: Si configuro el servidor nfs como puerta de enlace y le monto squid, tan sólo tengo que modificar un objeto en la configuración de dhcp de la base de datos ldap  para que se asigne como puerta de enlace  el servidor nfs. De este modo, podré parar el servidor ldap sin dejar de dar servicio. Así que me puse manos a la obra y ésta es la configuración que tengo actualmente:
Faltaría repasarlo detenidamente y hacer la prueba. ¿Cuándo? Ya veremos.
Publicado por primera vez en http://enavas.blogspot.com.es

viernes, 9 de mayo de 2014

DEBIAN_FRONTEND=noninteractive: Instalar un paquete de forma no interactiva

0 comentarios
En ocasiones necesitamos instalar un programa de forma desatendida, ya sea mediante puppet o cualquier otro mecanismo, pero no podemos hacerlo porque está pensando para realizar una instalación en modo interactivo, de tal manera que el usuario responda a determinadas cuestiones de configuración.

Es posible instalar un paquete de forma desatendida de manera que no haga preguntas al usuario y tome las opciones por defecto  utilizando: DEBIAN_FRONTEND=noninteractive.

Por ejemplo: Supongamos que quiero instalar el paquete hddtemp sin que me pregunte si deseo iniciar el demonio hddtemp en el arranque del sistema, cuya respuesta por defecto es "No". Podría hacerlo de la siguiente manera:
DEBIAN_FRONTEND=noninteractive apt-get install hddtemp
Publicado por primera vez en http://enavas.blogspot.com.es

wibiya widget