Anterior
Siguiente
Inicio
-
Programa para visualizar cámara de vídeo a
través de la tarjeta de TV
Se trataba de poder
visualizar en la pantalla de
nuestro servidor la cámara de vídeo situada en la entrada
del local. En un principio intenté usar el programa
fbtv ya que funciona en consola
teniendo el framebuffer activado. Al final, dadas las limitaciones y la
poca documentación que encontré sobre este programa, me
decanté por el
xawtv, que necesita un entorno
gráfico para funcionar, pero permite que se le manden comandos
después de ejecutar el programa principal, con el comando
xawtv-remote, de forma que podemos por ejemplo, cambiar de canal con un
mando a distancia y
lirc, o capturar imágenes.
Posteriormente y dado que el servidor X se comía gran parte de
los recursos de nuestro servidor, volvimos a fbtv, y capturamos
imágenes vía web gracias al comando fbgrab.
Este es el enlace a la página
que hace esto posible.
- Alarma en caso de calentamiento
Es un sencillo
script que nos mandará un mail cuando la temperatura del
servidor sea elevada. Útil para controlar servidores externos
que no siempre están bien ventilados, y el cliente se queja de
que se cuelga mucho.
Se basa en el paquete
lm-sensors
y en los módulos del kernel, los cuales están en el
kernel 2.6, bajo
Device Drivers, I2C
support. Debemos compilar el kernel con soporte para los
sensores que lleve nuestra placa base.
Este es el enlace al script
- Reiniciar automáticamente
el router cada x tiempo
Esto vale para un router que lleve algún tipo de shell dentro.
Añadimos en
cron.d una tarea que ejecute nuestro script en el intervalo de tiempo
deseado.
El script está hecho en perl y es el siguiente:
#!/usr/bin/perl
use Net::Telnet ();
$machine = '111.111.111.111';
$t = new Net::Telnet (Timeout =>
10);
$t->open($machine);
print "Connected to $machine\n";
$t->waitfor('/Login: $/');
$t->print("admin");
$t->waitfor('/Password: $/');
$t->print("password");
$t->waitfor('/\>/');
$t->cmd("reboot");
print "Device is being restarted\n"
-
Sistema de borrado de logs viejos y logs
demasiado grandes.
(sección sin terminar)
De vez en cuando teníamos problemas con el
scanner, ya
que
cuando estaba frío provocaba fallos en el servidor
de scanner. El problema consistía en que dejaba de
funcionar, y llenaba los logs de errores (cientos de MB de
líneas con errores de sane). Además de esto, nos
encontramos con que cada varios meses, teníamos muchos logs
viejos que no necesitábamos para nada, así que decidimos
hacer un script para eliminar los logs grandes y los logs viejos.
El comando find, junto con cron,
serán quienes nos ayuden en la tarea.
Para el comando find, los parámetros que
usaremos serán -mtime
y -size.
1.- "-mtime n"
Donde n es el tiempo en días. De este modo, buscamos los
ficheros que tengan n días, o bien +n días. Para buscar
ficheros que tengan más de 30 días, haríamos:
find
/var/log -mtime +30
2.- "-size x"
Donde x indica el tamaño en bloques de 512 bytes. De este modo
si queremos buscar ficheros de más de 5 MB: 5*1048576=5242880
bytes. Dividimos esto en bloques de 512 bytes, y tenemos 10240, de este
modo:
find /var/log
-size +10240
Nuestro script podría ser algo como:
$LOGDIR=/var/log/
for $logfile in `find $LOGDIR -type f
-mtime +30 && find $LOGDIR -type f -size +163840`
Para escuchar en todos los ordenadores
lo mismo, montamos un servidor de sonidos y de streaming.
El servidor de sonidos es mpd (Music Player Daemon).
Permite reproducir música en un servidor y administrar las
listas de reproducción desde otro equipo. Tiene múltiples
interfaces, incluyendo una para Mac OS X. Si lo queremos administrar
desde windows podemos usar un interface en php, que se puede instalar
en el mismo equipo que mpd, o en otro.
Para hacer streaming necesitamos un servidor de streaming, y un cliente
que le envíe audio a dicho servidor.
La intención
era montar un servidor icecast, pero por vagancia opté por
shoutcast, que me pareció más sencillo de configurar. Lo
podemos descargar de
http://www.shoutcast.com/download/files.phtml
Para enviar el stream de audio a dicho servidor usé Darkice
http://darkice.sourceforge.net/,
también muy sencillo de configurar echando un vistazo a su
fichero de configuración. La versión disponible para
Debian vía apt no incluye soporte para mp3, así que nos
bajamos la última versión desde la web y compilamos. Nos
pedirá un par de librerías, entre las que se incluyen
libjack0.80.0-0 y libjack0.80.0-0-dev.
Una vez esté todo funcionando, el esquema es el siguiente:
Mpd reproduce audio. Darkice comprime y manda el stream de audio al
servidor shoutcast. Los clientes escuchan el stream a través del
servidor shoutcast.
Puede que tengamos algún problema si nuestra tarjeta de sonido
no permite reproducir múltiples streams de audio al mismo
tiempo. Para ello, o bien usamos una Sound Blaster live, que permite
nativamente múltiples streams al mismo tiempo (Supongo que
habrá muchas otras que lo permitan), o bien usamos arts como
driver de audio, y creamos un /etc/asound.conf como
este.
-
Montar particiones ntfs para todos los usuarios
Añadimos en fstab:
/dev/X /mnt/Y ntfs users,owner,ro,umask=000 0 0
- En el directorio "/etc/security/",
tenemos varios
ficheros interesantes que nos pueden ayudar a limitar el número
de procesos, logins, tiempo de cpu, etc por usuario.
Para poder extender el escritorio a dos
monitores utilizaremos las extensiones xinerama.
Basta con editar el fichero de configuración de las X acorde con
nuestras gráficas y monitores, y al final del fichero espeficiar
cómo queremos encajar ambas pantallas.
Veámoslo con un ejemplo:
Section "Device"
Identifier "nvidia"
Driver "nvidia"
BusID
"PCI:01:00:00"
VideoRam 65536
EndSection
Section "Device"
Identifier "permedia"
Driver "glint"
BusID
"PCI:00:09:00"
VideoRam 4096
EndSection
Section "Monitor"
Identifier "dell"
HorizSync 30-130
VertRefresh 60-160
Option "DPMS"
EndSection
Section "Monitor"
Identifier "bn"
HorizSync 30-130
VertRefresh 60-160
Option "DPMS"
EndSection
Section "Screen"
Identifier "screen1"
Device "nvidia"
Monitor "dell"
DefaultDepth 24
SubSection "Display"
Depth 24
Modes
"1024x768" "800x600"
EndSubSection
EndSection
Section "Screen"
Identifier "screen2"
Device "permedia"
Monitor "bn"
DefaultDepth 24
SubSection "Display"
Depth 24
Modes
"800x600"
EndSubSection
EndSection
Section "ServerLayout"
Identifier "Default Layout"
Screen "screen1"
Screen "screen2"
RightOf "screen1"
InputDevice "Generic Keyboard"
InputDevice "Configured Mouse"
InputDevice "Generic Mouse"
EndSection
En el ejemplo configuramos dos tarjetas gráficas, dos monitores,
y dos "screens". Al final de todo le especificamos que queremos dos
"screens", de los cuales el "screen2" está a la derecha del
"screen1"; de modo que ampliamos el escritorio hacia la pantalla de la
derecha.
- Autenticación mediante https en mambo:
En primer lugar debemos poder acceder a
nuestro dominio tanto por http como por https. Una vez tengamos esto
hecho,
Para el backend:
Creamos una directiva en apache para que redirija /administrator a
https://dominio.com/administrator
Redirect /administrator https://jesusvillaverde.com/administrator
Para el frontend:
Editamos el fichero "
<%mambo
root%>/modules/mod_login.php" y
buscamos la línea
<form
action="<?php echo sefRelToAbs( 'index.php' ); ?>" method="post"
name="login" >
Cambiamos por:
<form
action="<?php echo sefRelToAbs( 'https://dominio.com/index.php' );
?>" method="post" name="login" >
- Abrir imágenes grandes en ventana nueva - Joomla + gallery2
Simplemente sustituímos el fichero
photo.tpl por
éste, dentro del directorio
$path_to_gallery/themes/$nuestro_tema/templates- Arranque dual de 2 Windows con Grub
Se trata de tener dos windows
instalados, y que cada uno no pueda ver al otro. Para ello creamos dos
entradas en grub, y controlamos qué particiones están
visibles con hide y unhide. Asimismo debemos mapear las unidades en el
caso del windows que esté en la segunda partición.
Opcionalmente ponemos contraseña a uno de los Windows.
Por último no debemos olvidar poner "rootnoverify" al definir
las unidades, ya que de lo contrario no detectará correctamente
el sistema de ficheros cuando la unidad esté oculta.
title
Microsoft Windows XP Home
rootnoverify (hd0,0)
unhide (hd0,0)
hide (hd1,0)
makeactive
chainloader +1
title
Microsoft Windows XP Professional
rootnoverify (hd1,0)
unhide (hd1,0)
hide (hd0,0)
map (hd1) (hd0)
map (hd0) (hd1)
makeactive
chainloader +1
password 12345
- Apagar vía software la pantalla del equipo
Ejecutamos:
xset dpms force off
- Seleccionar la tarjeta de sonido por defecto cuando se tiene más de una
Con el comando
"less /proc/asound/modules" podemos ver qué tarjeta se
usa como primaria.
Y en el fichero
"/etc/modprobe.d/alsa-base" Hacemos blacklist o damos preferencia a los módulos que necesitemos.
# Prevent abnormal drivers from grabbing index 0
options snd_emu10k1 index=-2
Otra opción es tocar en el fichero
"~/.asoundrc" y cambiar la tarjeta por
defecto
(hw:0,1)pcm.!default { type asym playback.pcm { type plug slave.pcm "hw:0,1" } }
- Compartir un terminal para poder ayudar o enseñar a otra persona
Una opción es usar el comando
script. De este modo solo uno tiene el mando de la sesión.
El profesor ejecuta:
script -f /tmp/terminal
Y ahora el alumno:
tail -f /tmp/terminal
Sin embargo, con el comando
screen se pueden compartir sesiones interactivas.
El profesor asigna un nombre a la sesión, y luego permite a determinados usuarios entrar en ella:
screen -S nombredelasesion
ctrl+a : multiuser on
ctrl+a : acladd alumno
Ahora el alumno ejecutará lo siguiente:
screen -x usuario/sesión
- Hacer una copia de seguridad de una tabla de particiones.
Esto
puede tener muchas utilidades, como clonar discos para montar un Raid
0. Simplemente guardaremos la tabla de particiones en un fichero, y lo
utilizaremos posteriormente para volcar dicha tabla en un nuevo disco.
Hacemos copia de seguridad de la tabla de particiones con el comando sfdisk
sfdisk -d /dev/sda > part_table_backup
Si
falla un disco duro y lo cambiamos, ejecutamos esto sobre el nuevo
disco para restaurar la tabla de particiones: (sustituír sdx por el
apropiado)
sfdisk /dev/sdx < part_table_backup
Muy útil para centralizar los logs de todos nuestros equipos, o para utilizar en routers que lo permitan.
En la máquina que va a guardar los logs, tenemos que ejecutar syslog con el parámetro -d. Lo podemos introducir en
/etc/default/syslogd.
En la máquina originaria de los logs, ejecutaremos a mano syslog con el parámetro -R:
"syslogd
-R hostname_syslog_server", o bien especificaremos este parámetro en el
fichero mencionado con anterioridad, /etc/default/syslogdLos
logs se agrupan en categorías o "facilities". Si queremos que los logs
de nuestro router vayan a un fichero específico en lugar de syslog,
debemos averiguar con qué facility llegan y enviar esas facilities a un
fichero aparte. Esto se ajusta en
"/etc/syslogd.conf".
Para averiguar qué facility está usando nuestor router, debemos iniciar syslogd a mano en el servidor, con
"syslogd -d -r", y posteriormente enviarle un
"kill -SIGUSR1"
para activar el modo debug. Tras esto, los mensajes de log irán
apareciendo en la consola desde la que iniciamos syslog. En cada línea
de log vendrán datos adicionales, entre ellos la facility usada. En el
caso de LinuxAP sobre un SMC2682W, la facility usada es "user", por lo
que agregaremos en
syslog.conf lo siguiente:
user.*
-/var/log/LinuxAP.log
- Utilizar un proxy desde un terminal, para navegar o para usar apt-get
Simplemente agregamos una variable de entorno con la url y puerto de nuestro proxy
export http_proxy=”http://proxy.organizacion.com:8080”
- Apagar discos duros por software
Puede ser por ahorro energético, por prolongar la vida de un disco que no se usa con frecuencia, o por otro motivo.
Tenemos dos opciones, apagarlo manualmente mediante hdparm, o instalar
un programa que monitoriza los discos y los apaga cuando no se utilizan.
Spindown sería el programa de monitorización, y hdparm.
Dado que solo he probado hdparm, comento los parámetros más relevantes para el caso que nos ocupa:
hdparm -y / -Y / - C / -S
-y pone el disco en standby, apagando el motor principal
-Y pone el disco duro en modo sleep, apagando también parte de la electrónica
-C nos permite consultar el estado del disco. Si está en modo sleep,
esta consulta encenderá la parte electrónica y el disco pasará a standby
-S permite apagar el disco tras un tiempo de inactividad del mismo.
Dicho tiempo se pasa como parámetro, pero no está en un formato común,
sino que depende del disco. En mi caso con "-S 5" el disco se apaga a
los 30 segundos de inactividad, pero en otros discos el tiempo será
diferente. Es cuestión de probar. Al poner el comando nos indica el
tiempo, por lo que no tenemos que esperar a que se apague.
Reparar base de datos MYSQL
Si en algún momento, por un cierre
incorrecto del sistema, caída de tensión o el motivo que fuere, alguna
tabla de nuestras bases de datos no se cierra incorrectamente, es
probable que necesitemos repararla, para lo cual ejecutaremos el
siguiente comando
mysqlcheck -u $USER -p$PASSWORD --repair $DATABASE $TABLE
Anterior
Siguiente
Inicio