Archivo de la categoría: Sistema

GNU/Linux. Aspectos relativos al sistema operativo.

openSUSE 13.2 y los scripts if-up.d

En una entrada anterior os contaba cómo lanzar scripts al inicio del sistema. En aquel momento usaba la versión 13.1 de openSUSE.

Hace unas semanas salió la 13.2 con nuevos cambios y versiones más actualizadas y estables de KDE o de Yast, por ejemplo. Aquí podéis ver un resumen de los mismos.

Como es lógico, de inmediato me puse manos a la obra a instalarme la nueva vesión. La verdad que me gustó bastante aunque en el portátil he tenido algún que otro problemilla gráfico -que he podido solucionar-.

Sin embargo, cuando la tenía ya instalada y configurada me dí cuenta que no se estaban ejecutando los scripts que tengo en /etc/sysconfig/network/if-up.d. Me pongo a investigar y al final, tras consultar incluso la lista de usuarios de openSUSE, llego a la conclusión de que NO funcionan en opensuse 13.2, es decir, que los scripts que se colocan en dicho directorio no se lanzan al inicio.

Parece que el problema está relacionado con la adopción hace ya tiempo de systemd, pero no lo tengo 100% claro. Por alguna web leí que habían adoptado un nuevo framework para homogeneizar la configuración de la red y que esto afectaba también.

Al final resulta que no puedo ejecutar dichos scripts en la 13.2, o al menos yo no lo conseguí. Entre esto y los problemillas que comentaba que tuve en el portátil han conseguido que en 2 de mis tres ordenadores habituales vuelva a la 13.1. En el tercero en discordia seguramente no tardaré en poner también la 13.1.

Así que si alguien está pensando en instalársela y usa estos scripts que se lo piense. Si alguien sabe una manera sencilla de hacer esto funcionar que me lo diga, porfi.

Deshabilitar ipv6 en GNU/Linux

Si no usáis actualmente IPv6 y queréis deshabilitarla completamente en vuestro equipo (*) con GNU/Linux es muy sencillo. Simplemente hay que pasarle al cargador de arranque un parámetro, en concreto, éste:

ipv6.disable=1

Para que el cambio esté presente siempre que arranquéis, debéis meter el parámetro en /etc/default/grub, en la línea GRUB_CMDLINE_LINUX_DEFAULT, que quedaría así:

GRUB_CMDLINE_LINUX_DEFAULT="ipv6.disable=1"

A continuación, ejecutamos:

# grub-mkconfig -o /boot/grub/grub.cfg

Aquí hemos visto cómo hacerlo en GRUB, que será el cargador que casi con toda segurdiad usará vuestra distro. Si usáis otros y/o queréis ampliar la información podéis hacerlo aquí y aquí.

Mil gracias a mi amigo Salvi, pozo de sabiduría linuxera, por comentármelo 😉

 

(*) Por defecto, IPv6 suele venir habilitado en las distros Linux.

Gestionando máquinas virtuales con VirtualBox desde línea de comandos

Alguna vez he hablado aquí de VirtualBox (por ejemplo, aquí o aquí) y las ventajas de usarlo a la hora de probar nuevas distros, tener sistemas alternativos para ciertos programas que sólo funcionan en ellos o incluso para montar un laboratorio de pruebas.

Aunque la interfaz gráfica Qt que proporciona cubre la gran mayoría de funcionalidades que necesitaremos en un uso sencillo de este sistema de virtualización, es posible usarlo también desde línea de comandos.

Para ello tenemos el comando VBoxManage. Con este comando podemos realizar todo tipo de gestión con las máquinas virtuales. De hecho, podemos hacer todo lo que permite la interfaz gráfica y más cosas. A continuación os muestro algunos ejemplos prácticos de uso de VBoxManage.

Crearlas:

VBoxManage createvm -name NOMBREVM -register

Mostrarlas:

VBoxManage list vms

Arrancarlas:

VBoxManage startvm NOMBREVM

Pararlas:

VBoxManage controlvm NOMBREVM poweroff

Mostrar VMs (*) en ejecución:

VBoxManage list runningvms

Mostrar detalles de las VMs en ejecución:

VBoxManage list runningvms -l

Mostrar detalles de una VM en concreto:

VBoxManage showvminfo NOMBREVM

Hacer captura de pantalla:

VBoxManage controlvm NOMBREVM screenshotvm CAPTURE.png

Modificar memoria asignada a una máquina virtual (debe estar apagada):

VBoxManage modifyvm NOMBREVM --memory 4000MB

Este comando tiene muchísimas más opciones con una completa lista de parámetros. Si queréis más información al respecto podéis consultarla aquí.

En este artículo hemos visto cómo gestionar un equipo host (=anfitrión) VirtualBox mediante línea de comandos a través de VBoxManage. Esto lo hemos hecho en local, es decir, estando en la misma máquina host. En un artículo próximo veremos cómo hacerlo de forma remota.

 

 

(*) VM = Virtual Machine (máquina virtual).

Mover ficheros .vdi -VirtualBox- y no morir en el intento

Si usáis VirtualBox para crear y administrar máquinas virtuales (vms en adelante) puede que se os haya presentado el problema de que necesitáis moverlas de un disco a otro por diversos motivos (casi siempre por falta de espacio en el primero).

En mi caso ocurre que en mi portátil tengo dos discos duros (ver artículo de la instalación del ssd) y cuando tenía pocas vms me apañaba bien guardándolas todas en el ssd, lo cuál me venía bien porque es más rápido.

Desde entonces he venido creando máquinas y más máquinas y ahora tengo problemas de espacio. ¿Cómo solucionarlo? Es lo que voy a explicar ahora brevemente. Es muy sencillo.

En mi caso, tengo vms con windows y vms con linux. Para organizarlas un poco mejor creo grupos (uno para windows y otro para linux). Estos grupos son, en realidad, directorios en vuestro sistema de archivos. Os cuento esto porque yo he decidido mover todas las de windows al otro disco. Lo que he hecho ha sido mover el directorio al otro disco duro y simplemente crear un enlace simbólico desde el segundo al primero. Me explico:

En el disco ssd tengo el directorio /home/user/.virtualbox_vms/vms_windows. Lo que he hecho es moverlo a otra ruta, como por ejemplo /mnt/datos/vms_windows. Ahora, ejecuto el siguiente comando:

ln -s /mnt/datos/vms_windows /home/user/.virtualbox_vms/

Con esto ya lo tenéis movido y funcionando sin problemas (comprobado).

Otro caso que os puede pasar es que queráis mover sólo el .vdi (es decir, el propio fichero del disco duro de la máquina virtual). En este caso, simplemente lo movemos (ojo, estas cosas SIEMPRE con la máquina virtual en cuestión apagada) a la nueva ubicación y editamos el fichero de configuración de dicha máquina virtual (*) cambiando la ruta en la sección que comienza con «<HardDisk uuid», en concreto, en la parte donde dice «location=».

Espero que os sirva.

 

(*) El archivo de configuración lo tenéis dentro del directorio de la máquina virtual en cuestión. Es un archivo con extinsión .vbox.

Configurando nuestro SAI en Linux

Introducción

En un anterior artículo os comenté las ventajas de disponer de un SAI conectado a vuestro equipo (es decir, entre la toma de corriente y vuestro PC). En este artículo os comento cómo configurar vuestro equipo Linux (*) para tener en cuenta los eventos que recibe nuestro SAI y poder actuar en consecuencia. El software que en Linux se encarga de gestionar estas cositas se llama NUT (Network UPS Tools). A continuación veremos cómo instalarlo y configurarlo. NOTA: partimos de que tenemos nuestro PC conectado ya al SAI tanto con el cable de corriente como por cable USB para la comunicación del software con el mismo.

Instalación

Este software lo podéis encontrar en los repositorios de vuestra distro favorita casi con total seguridad (si no, podéis descargarlo de la web oficial). En nuestro caso (openSUSE) haremos esto:

zypper in nut

Configuración

Una vez tenemos instalado el software en nuestro sistema tenemos que configurar unos cuantos ficheros, ubicados todos en /etc/ups, a saber:

  • nut.conf
  • ups.conf
  • upsd.conf
  • upsd.users
  • upsmon.conf

Investigando en Internet una buena guía para configurar NUT encontré esta web, en la que el autor explica perfectamente no sólo cómo configurar NUT sino como probarlo e incluso tratar los posibles errores. Os recomiendo encarecidamente que le echéis un vistazo, sobre todo si usáis openSUSE. A continuación os indico las líneas de los ficheros de configuración que tenéis que tener para que os funcione bien. El resto de líneas que aquí se omiten podéis dejarlas con los valores por defecto. En la guía que os comentaba antes tenéis bastante bien explicado para qué sirven. Pondré una breve descripción y directamente las líneas a añadir/modificar.

nut.conf

Aquí configuramos el modo de funcionamiento del software:

MODE=standalone

ups.conf

Aquí se especifica el SAI (o SAIs) que vamos a monitorizar. Lo más importante aquí es el driver que se elige (**):

[eaton]
driver = usbhid-ups
port = auto
desc = "Eaton SAI en skywalker"

upsd.conf

IP y puerto donde va a escuchar peticiones el demonio upsd. Aquí también configuraríamos si debemos conectarnos a máquinas remotas para que se apaguen si es que la principal ha detectado corte de suministro eléctrico. El PC conectado al SAI sería el master (maestro) y los demás equipos serían slaves (esclavos). En nuestro caso sólo controlamos una máquina, la nuestra, por tanto:

LISTEN 127.0.0.1 3493

upsd.users

Usuarios que podrán conectarse al servicio upsd (***):

[upsmaster]
password = mipassword
upsmon master

upsmon.conf

Aquí se configura la cadena de conexión al SAI y el comando a lanzar para realizar el shutdown del equipo entre otras cosas (lo más importante son estos dos valores, el resto se pueden quedar con las opciones por defecto):

MONITOR eaton@localhost 1 upsmaster mipassword master
SHUTDOWNCMD "/sbin/shutdown -h +0"

upssched.conf

 

CMDSCRIPT /usr/sbin/upssched-cmd

PIPEFN /var/lib/ups/upssched.pipe
LOCKFN /var/lib/ups/upssched.lock

AT ONBATT * START-TIMER two-minute-warning-timer 5
AT ONBATT * START-TIMER one-minute-warning-timer 65
AT ONBATT * START-TIMER shutdown-timer 125

AT ONLINE * CANCEL-TIMER two-minute-warning-timer
AT ONLINE * CANCEL-TIMER one-minute-warning-timer
AT ONLINE * CANCEL-TIMER shutdown-timer
AT ONLINE * EXECUTE ups-back-on-line

AT LOWBATT * EXECUTE ups-low-battery
AT LOWBATT * START-TIMER shutdown-timer 35

Primera prueba

Para ver que todo va OK podemos ejecutar:

upsc NOMBRE_SAI

que es el nombre que hemos definido en ups.conf y que también podemos ver con el comando:

upsc -L

Otro comando interesante es:

upscmd -l NOMBRE_SAI

que muestra los comandos que podemos usar con nuestro SAI (no todos los modelos permiten esto).

Ejemplo de comando:

upscmd -u USER -p PASSWORD NOMBRE_SAI beeper.disable

el cuál deshabilita el pitido del SAI (suponiendo que en el listado de comandos que se muestran con «upsc -l» aparece dicho comando).

 

Si va todo Ok ya lo tenemos. Si da algún fallo mirad la sección siguiente.

Posibles fallos

Si tras terminar de configurar todo falla algo a la hora de arrancar el servicio, un problema muy frecuente es que se los permisos de los archivos estén mal. Para corregirlo mirad aquí (apartado 2) cómo tienen que estar. Más errores son tratados y explicados en el apartado 10 de dicho artículo.

Conclusiones

Si no tenéis ningún sistema que proteja vuestros equipos contra problemas con el suministro eléctrico (sobre todo picos de corriente) no deberíais dejarlo así mucho más tiempo. Tenéis la opción de poner una regleta con protección o bien un SAI como vimos en el anterior artículo. Si ponéis un SAI, como habéis podido ver en el artículo, le podéis sacar bastante partido haciendo, por ejemplo, que vuestro equipo se apague de forma controlada si hay un apagón. Espero que os sirva.

(*) Particularizaré para mi distro (openSUSE) pero esto es válido para prácticamente cualquier otra distro.

(**) Para saber cuál es el que se necesita tenemos que saber primero qué SAI tenemos (esto lo podemos ver con un lsusb -v). Una vez que lo sabemos (tanto marca como modelo) consultaremos aquí cuál es el que corresponde. En nuestro caso tenemos un Eaton Protection Station, por lo que el driver a elegir es usbhid-ups. También podemos consultar la página del manual de nutupsdrv (al final de la misma aparecen todos los drivers y consultando su manual se pueden ver los modelos y comandos soportados).

(***) No son usuarios del sistema sino usuarios del propio software; estas credenciales se usan en el fichero upsmon.conf.

Cifrando pendrive con openSUSE

Aunque indico en el título que este artículo está orientado a la distro openSUSE, realmente se puede usar en cualquier otra distro Linux.

Todos tenemos algún pendrive con documentos, fotos, etc. A veces dichos archivos contienen cierta información íntima, personal, confidencial, etc. la cuál no nos gustaría que cayera en manos desconocidas (si va alguna foto comprometida tardaría «cero coma» en aparecer en alguna red social, y si no que le pregunten a alguna famosa que se ha hecho fotos con su móvil).

Siendo un pendrive algo tan pequeño y, por tanto, fácil de perder, lo suyo es que si llevamos información importante, el pendrive tenga algún sistema que proteja el acceso a la misma de manos extrañas.

Esto se puede conseguir fácilmente cifrando el pendrive usando las propias herramientas que traen las distros actuales. En mi caso, me voy a referir a openSUSE pero insisto, la opción de cifrado la tenéis en la gran mayoría de herramientas de particionado que incluyen las otras distros o que podéis instalar fácilmente (hablo de gparted, KDE Partition Manager…).

Es muy fácil: abrimos Yast, vamos a System –> Partitioner (lo tengo en inglés, pero supongo que en español será algo como «Sistema –> Particionador» o similar). Ahí elegimos nuestro pendrive que tendremos pinchado en el PC. Borramos la partición que tenga (ojo: haced antes copia de seguridad porque la perderéis) y creamos una nueva. En el cuadro de diálogo de creación de la misma hacemos clic en la casilla de verificación que indica cifrar el dispositivo tal y como se muestra aquí:

Para cifrar la partición activaremos la casilla

Para cifrar la partición activaremos la casilla

Cuando le demos a crear partición nos pedirá que introduzcamos el password con el que vamos a cifrar el pendrive. Como siempre en estos casos, lo introduciremos dos veces por seguridad.

Cuando termine, sacamos el pendrive. A partir de ahora, el pendrive estará cifrado y, cuando lo insertemos en un PC, nos pedirá un password, sin el cuál no podremos acceder a la información (fotos, documentos, etc.) del mismo.

Comentar que aunque hemos dicho cifrar dispositivo, realmente podemos crear dos particiones, cifrar una y la otra crearla sin cifrar, por lo que podemos usar el pendrive tanto para una cosa como para la otra.

Por último, también se puede crear un archivo cifrado que en realidad contendrá un sistema de archivos y que podremos montar usando el password correspondiente. Aquí tenéis un ejemplo de cómo usar esto usando los dispositivos loop.

A partir de ahora no tenéis excusa para mantener a salvo vuestra información sensible.

Analizando logs fácilmente con logwatch

Para mantener nuestro PC en buen estado, tenemos que estar pendientes de lo que está ocurriendo en el mismo. No nos va a hablar directamente (aunque se podría conseguir algo parecido) pero nos lo va a mostrar en un registro. Hablo del log.

Mirar el log todos los días es tedioso, sobre todo si no haces grandes cambios en el PC ni nada que pueda alterar el buen funcionamiento del mismo.

En cualquier caso, si pudiéramos echar un vistazo rápido de lo que ocurre, es decir, un resumen de las cosas más importantes del log, podríamos anticiparnos ante problemas posteriores y/o solucionar cositas que nos pasan con frecuencia (porque el sistema te está diciendo en el log por qué suceden).

Esta función de resumir los logs la hacen programas como logwatch. Este software se instala fácil y rápidamente y con sólo ejecutarlo ya nos muestra un resumen de las cosas más importantes del sistema:

################### Logwatch 7.4.0 (03/01/11) #################### 
 Processing Initiated: Fri Sep 19 00:25:30 2014
 Date Range Processed: yesterday
 ( 2014-Sep-18 )
 Period is day.
 Detail Level of Output: 0
 Type of Output/Format: stdout / text
 Logfiles for Host: skywalker
 ################################################################## 
 
 --------------------- Selinux Audit Begin ------------------------
**Unmatched Entries** 
 type=1400 audit(1411071917.719:2): apparmor="STATUS" operation="profile_load" nam
="/{usr/,}bin/ping" pid=529 comm="apparmor_parser"
 type=1400 audit(1411071917.733:3): apparmor="STATUS" operation="profile_load" nam
="/sbin/klogd" pid=537 comm="apparmor_parser"
 type=1400 audit(1411071917.742:4): apparmor="STATUS" operation="profile_load" nam
="/sbin/syslog-ng" pid=541 comm="apparmor_parser"
 type=1400 audit(1411071917.753:5): apparmor="STATUS" operation="profile_load" nam
="/sbin/syslogd" pid=545 comm="apparmor_parser"
 type=1400 audit(1411071917.768:6): apparmor="STATUS" operation="profile_load" nam
="/usr/lib/apache2/mpm-prefork/apache2" pid=550 comm="apparmor_parser"
 type=1400 audit(1411071917.769:7): apparmor="STATUS" operation="profile_load" nam
="/usr/lib/apache2/mpm-prefork/apache2//DEFAULT_URI" pid=550 comm="apparmor_parser

 type=1400 audit(1411071917.769:8): apparmor="STATUS" operation="profile_load" nam
="/usr/lib/apache2/mpm-prefork/apache2//HANDLING_UNTRUSTED_INPUT" pid=550 comm="ap
armor_parser"
 type=1400 audit(1411071917.770:9): apparmor="STATUS" operation="profile_load" name="/usr/lib/apache2/mpm-prefork/apache2//phpsysinfo" pid=550 comm="apparmor_parser"
 type=1400 audit(1411071917.779:10): apparmor="STATUS" operation="profile_load" na
me="/usr/lib/dovecot/anvil" pid=554 comm="apparmor_parser"
 type=1400 audit(1411071917.790:11): apparmor="STATUS" operation="profile_load" name="/usr/lib/dovecot/auth" pid=558 comm="apparmor_parser"
---------------------- Selinux Audit End -------------------------

--------------------- iptables firewall Begin ------------------------
Listed by source hosts:
 Dropped 89 packets on interface enp2s0
 From fe80:0000:0000:0000:1e6f:aa22:aa22:2122 - 2 packets to udp(5353) 
 From 192.168.1.33 - 87 packets to udp(32951,34298,35537,35639,36732,37794,39042,3
485,43827,46363,47490,48232,48262,49410,51155,54326,54679,56707,57796,59073,59619,
982) 
 ---------------------- iptables firewall End -------------------------

 --------------------- pam_unix Begin ------------------------
su:
 Sessions Opened:
 root -> user: 2 Time(s)
 
 systemd-user:
 Unknown Entries:
 session opened for user user by (uid=0): 1 Time(s)
 session opened for user root by (uid=0): 1 Time(s)
 ---------------------- pam_unix End -------------------------
 --------------------- SSHD Begin ------------------------
 SSHD Started: 2 Time(s)
 ---------------------- SSHD End -------------------------

 --------------------- Disk Space Begin ------------------------
Filesystem Size Used Avail Use% Mounted on
 /dev/sda1 30G 12G 17G 42% /
 devtmpfs 1.9G 28K 1.9G 1% /dev
 ---------------------- Disk Space End -------------------------
 ###################### Logwatch End #########################

Podemos ejecutarlo con el parámetro –detail high si queremos más detalles. También podemos usar –range para decir qué franja del log queremos (ayer, todos, etc.).

Por último, es interesante que se nos envíe esto por mail. Esto lo podéis hacer fácilmente con la forma que os expliqué aquí.

También se podría usar la propia función de enviar mail que tiene logwatch, pero para ello tendríamos que usar un cliente smtp que se conecte a un servidor de correo de forma correcta (autenticándose) y nos envíe un mail (*). Por ejemplo, se podría usar ssmtp o msmtp. Lo mismo un día os hablo de uno de estos programas, que son interesantes para mandar mails usando el comando mail desde la línea de comandos.

En cualquiera de los dos casos, lo suyo es automatizar este chequeo y que, por ejemplo, cada mañana nos envíe un mail con el resumen de las cositas que han ocurrido en el día de ayer (parámetro –range yesterday).

 

(*) Alguien pensará en usar su propia MTA en su equipo usando postfix o sendmail. Funcionar es posible que funcione, pero tarde o temprano os van a banear de servidores de correo e incluso meter vuestra IP en listas negras porque no corresponde con el servidor autorizado de un dominio. Por eso recomiendo usar cositas como ssmtp o msmtp para estos menesteres.

Monitorizando el consumo de red en nuestro equipo GNU/Linux (II)

En el anterior artículo vimos cómo usar iftop para monitorizar el consumo de ancho de banda en nuestro equipo GNU/Linux.

Hoy vamos a ver otro comando interesante: iptraf.

iptraf es una utilidad muy completa para monitorizar el consumo de ancho de banda actual en nuestras interfaces de red así como mostrar estadísticas de uso de las mismas.

Al arrancarlo sale una interfaz tipo curses, que permite seleccionar con los cursores del teclado la opción que queremos. Una opción que muestra bastante información es la de Detailed interface statistics, que muestra algo así:

Ejecución de iptraf

Ejecución de iptraf (*)

También es interesante la primera opción IP traffic monitor, que muestra las conexiones TCP junto con las estadísticas de paquetes y bytes enviados tanto en un sentido como en otro.

Espero que os resulte útil.

 

(*) Imagen descargada desde la web oficial de iptraf.

Monitorizando el consumo de red en nuestro equipo GNU/Linux (I)

Si nos interesa saber qué ancho de banda se está consumiendo en nuestro equipo Linux podemos hacerlo de forma muy sencilla usando la aplicación iftop.

iftop es una sencilla aplicación que funciona en modo texto y que, por tanto, podemos lanzar en cualquier sesión de terminal que tengamos abierta.

Está disponible para las distribuciones más importantes. Al arrancar la aplicación tiene este aspecto:

Ejecución de iftop (screenshot de la web oficial)

Ejecución de iftop (*)

Como vemos, nos muestra una lista de IPs origen e IPs destino que detecta nuestra tarjeta de red y qué cantidad de tráfico estamos enviando/recibiendo. Nos muestra 3 columnas a la derecha, en las cuáles nos informa el tráfico enviado/recibido en los últimos 2, 10 y 40 segundos.

Es algo parecido a lo que hace top con los recursos del sistema pero ésta aplicación lo hace con el consumo de ancho de banda.

En las dos últimas líneas nos muestra el tráfico acumulado (tanto recibido como enviado) desde que hemos arrancado la aplicación, los picos de tráfico y también el total de enviado y recibido en los últimos 2, 10 y 40 segundos.

Una vez que lo arrancamos tenemos varias opciones útiles, como por ejemplo:

t: Cambia el aspecto (sólo tráfico enviado, sólo recibido, ambos en una línea, ambos en 2 líneas)
p: Muestra los números de puerto
n: No resuelve los nombres de host (muestra las IPs)
T: muestra una columna adicional con los totales acumulados para ese tráfico
l: permite hacer filtros introduciendo la cadena por la cuál queremos filtrar
?: muestra la ayuda (todas las teclas y sus funciones)

Usad la opción «?» para ver todas porque hay muchas más opciones. Por ejemplo, también son útiles las que permiten ordenar el resultado por una u otra columna (con «<» y «>»).

Se puede arrancar ya la aplicación con unos parámetros. Por ejemplo, si sabemos que no queremos que resuelva los nombres podemos arrancarlo con la opción -n. Con el comando man podéis indagar más sobre todas las opciones disponibles.

Es muy útil para poder saber, en un momento en el que notáis que las descargas o la navegación web -por ejemplo- van más lentas de lo normal.

 

(*) Imagen descargada de la wikipedia.