aAnterior
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"
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.
- 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"
}
}
- Redireccionar todo el sonido hacia la salida S/PDIF
Crearemos el fichero ~/.asoundrc con el siguiente contenido:
(Puede variar según el sistema. En este caso funcionó para una tarjeta de sonido Realtek con chipset ALC892)
pcm.!default {
type plug
slave.pcm "dmixer"
}
pcm.snd_digital {
type hw
card 0
device 1
}
ctl.snd_digital {
type hw
card 0
device 1
}
pcm.dmixer {
type dmix
ipc_key 1024
ipc_perm 0666
slave {
pcm "snd_digital"
period_time 0
period_size 1024
buffer_size 4096
channels 6
}
}
ctl.dmixer {
type hw
card 0
}
En algunos casos tendremos que especificar en XBMC un dispositivo de audio personalizado: "plug:dmixer"
- 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
- Averiguar el UUID de una partición para utilizarlo en grub o fstab
Utilizaremos el comando blkid
Combinar dos ficheros en columnas
#pr -m -t -s fichero1 fichero2
- Priorizar un repositorio en distribuciones basadas en Debian
Si tenemos repositorios de varias ramas y sólo queremos establecer una por defecto, antiguamente bastaba con añadir
APT::Default-Release "stable"; (o la que corresponda) en el fichero
/etc/apt/apt.conf,
pero en versiones modernas parece no funcionar. Sin embargo, otro
método que sí funciona actualmente (04/2012) es el llamado APT pining,
que consiste en establecer prioridades para los diversos repositorios
que tengamos configurados. Dichas prioridades se establecen en función
del nombre de la rama: "stable, testing, unstable, experimental). A
mayor número asignado, mayor prioridad. Los repositorios con prioridad
negativa solo se utilizarán cuando expresamente se le indique a
apt-get mediante el parámetro
"-t rama", de modo que conseguimos el mismo efecto que con
APT::Default-Release. Para configurar APT pining añadiremos lo siguiente en el fichero
/etc/apt/preferences, ajustándolo a nuestras necesidades:
Package: *
Pin: release a=stable
Pin-Priority: 900
Package: *
Pin: release a=testing
Pin-Priority: -10
- Buscar y eliminar archivos específicos
En ocasiones queremos eliminar determinados archivos de todo el disco duro. Un caso típico son los molestos "
Thumbs.db" que Windows nos deja desperdigados en carpetas con imágenes.
Hay mil maneras de llevar a cabo esta tarea, pero la más sencilla
consiste en una única línea. Además tiene en cuenta los espacios en los
nombres de directorios para que no se nos escape ningún fichero.
find . -iname Thumbs.db -print0 |xargs -0 rm
Con el parámetro "
-print0"
del comando find conseguimos que el separador (ICS) sea un carácter
nulo en lugar de un retorno de carro. El parámetro -0 de xargs
hace lo propio a la hora de interpretar los ficheros que recibe.
Anterior
Siguiente
Inicio