Welcome, connect your terminal

Imagino que todos los sysadm/informaticos de este mundo hemos sufrido alguna vez el caso del “Amigo informatico“.

En mi caso últimamente, después de usar muchas veces ghost, he decidido cambiar… Nada de dar un dvd con la imagen, que para eso tenemos toneladas de gigas de espacio en disco y si el usuario se queja, pues mira, habérselo pedido a otro.

Partiendo de esto, he decidido hacer un script tipo menú de instalación con las opciones mínimas y que sea fácilmente gestionable por el usuario final.

El preparación es simple:

  • Se particiona el disco.
  • Instalamos windows
  • Instalamos un linux “minimal”, y dependencias necesarias para que el script funcione
  • Añadimos nuestro script.
  • Modificamos los parámetros de configuración necesarios en el mismo
  • Creamos un usuario de sistema sin privilegios, modificamos ~/.bashrc para lanzar automáticamente el script cuando se logue el usuario.
  • Deshabilitamos la posibilidad de salir del script (trap) para evitar problemas.
  • Nos guardamos el pass de root ;-)
  • Modificamos grub para que el menú diga algo como Restore or similar y el usuario no se asuste viendo GNU/Linux
  • Informar al usuario de como funciona el entorno, aunque es muy muy sencillo)

Con eso y generar nosotros mismos la primera imagen que será imborrable (desde el script), ya estaría todo.

El funcionamiento es mucho más simple aún:

  1. Restaurar imagen
  2. Generar Imagen
  3. Borrar Imagen
  4. Listar Imágenes
  5. Ayuda
  6. Reboot

No deberían añadirse muchas más opciones, cuanto menos se pueda hacer, mejor.

Las ventajas son bastante óbvias:

  • El propio usuario se gestiona sus imágenes, por lo que cambio de sistema windows (de xp a 7 por ejemplo), no deberían necesitar más ayuda.
  • El script debería funciona en cualquier linux mientras se cumplan las deps.
  • El backup “va contigo”, no hay discos adicionales.

Y las desventajas:

  • Espacio en disco
  • Que se carguen grub
  • Que alguna vez falle el ntfsclone (FAIL!)

Por supuesto puede que el script no esté libre de fallos, por ejemplo, no consigo hacer trap de “CONTROL+Z” aunque haga trap de todas las señales. Aunque probado está ;-)

El script está documentado en la wiki.

The easiest way to start X

Sep-27-2011 By dodger

Yesterday while reinstalling Arch in the x86_64 flavour :-) I was thinking which will be the best way to start X window system.
I want to start my X window’s without user prompt (so CDM is not an option), and I don’t any of common login-managers (gdm, xdm, kdm or slim)… I’ve tried to use the simplest way, and it works!

Let’s go, deps:

1
pacman -Ss xorg-xinit screen

And optional:

1
pacman -Ss xterm xort-twm

Cool? ;-) Of course, you must have the X-window (1 &2) system installed and your preferred lightweight desktop manager.

Add your super-power-user:

1
useradd -s /bin/bash -c "super-power-user" dodger

And now the script:

1
vim /etc/rc.d/autofluxbox
1
2
3
4
5
6
7
8
9
#!/bin/bash -x
LOGDIR=/var/log/autofluxbox
[ ! -d $LOGDIR ] && mkdir $LOGDIR
exec 1> $LOGDIR/autofluxbox.$(date +%Y%m%d%H%M).log
exec 2> $LOGDIR/autofluxbox.$(date +%Y%m%d%H%M).err
USER=dodger
STARTX="/usr/bin/startx"

su - ${USER} -c "screen -S Fluxbox_startup -d -m ${STARTX}"

And:

1
chmod +x /etc/rc.d/autofluxbox

One thing I’ve just found is ${PATH} seems to be wrong on my X environment ¬¬’… I will continue investigating.

Y llegamos a una de mis herramientas favoritas y sin la que prácticamente no me planteo la administración de un servidor.
Sobre todo conociendo como van las conexiones españolas.

Haciendo copy/paste del manual:

Screen is a full-screen window manager that multiplexes a physical terminal between several processes (typically interactive shells).

Tradución/interpretación: Screen es un emulador de terminal des-atachado que permite multiplexación de terminales.
Es decir, permite lanzar un proceso que es no es dependiente de un terminal; ya que todos los procesos de usuario en linux cuelgan de un terminal, aunque los mandemos a background y a no ser que usemos dtach.
Esto soluciona el problema de la reconexión, es decir, lanzar un programa de larga duración sin logar la salida y luego hacer el típico:

Se me ha colgado la conexión y no sé como ha finalizado!!!

Que fijo que a cualquier sysadm le ha pasado, habitualmente por despiste (trollface again).

Aparte de esta propiedad, tiene la gran ventaja de que permite lanzar “pestañas” (por hacer un símil) dentro de la misma conexión, es decir, N shells dentro de una única.
Por supuesto también permite splitting de la ventana en regiones (horizontales y depende de si screen está parcheado, verticales), aunque en mi caso soy contrario a usarlas por que es un poco “paja mental”, pero he de reconocer que en ocasiones viene muy bien.

La configuración la realizamos mediante el típico:

1
${HOME}/.screenrc

Pongo el mío como ejemplo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
deflogin on
vbell on
vbell_msg " Wuff ---- Wuff!! "
defscrollback 1024
bind ^k
bind ^\
bind \\ quit
bind K kill
bind I login on
bind O login off
bind } history
termcapinfo vt100 dl=5\E[M
hardstatus off
termcapinfo xterm*|rxvt*|kterm*|Eterm* hs:ts=\E]0;:fs=\007:ds=\E]0;\007
hardstatus string "%h%? users: %u%?"
termcapinfo xterm*|linux*|rxvt*|Eterm* OP
termcapinfo xterm 'is=\E[r\E[m\E[2J\E[H\E[?7h\E[?1;4;6l'
defnonblock 5
caption always "%{+b rk}%H%{gk} |%c %{yk}%d.%m.%Y | %72=Load: %l %{wk}"
hardstatus alwayslastline "%?%{yk}%-Lw%?%{wb}%n*%f %t%?(%u)%?%?%{yk}%+Lw%?"

Que nos genera algo como esto (eliminando la parte de htop):
Ejemplo de configuración de screen

Lo importante son las 2 últimas lineas visibles:

1
2
ciberterminal |12:12 14.09.2011 | Load: 0,25 0,24 0,18
0*$ bash 1-$ bash 2$ bash 3$ bash 4$ bash

Donde apreciamos:

  1. hostname, fecha, load avg.
  2. “Pestañas” disponibles

De esta forma de manera muy rápida y visual, apreciamos cuantas pestañas tenemos y el estado del servidor.

Otra propiedad adicional e intersante, es el clipboard propio, el scrolling y la posibilidad de salvar lo que aparecen el terminal (todo resumido con el nombre de “copy mode”.

Añado un “resumen” de mis shortcuts más usados, que en este caso son muchos:

##CONNECTION## From outside screen
screen
launch a new screen
screen -S NAME
launch a new screen with name “NAME”
screen -m PROGRAM
launch a screen and inside it the “PROGRAM”
screen -d -m PROGRAM
launch a DE-ATTACHED screen and run “PROGRAM” inside
screen -ls
launch a new screen
screen -x
bruteforce attach
screen -r SCREENAME
attach to screen “SCREENAME”
##INSIDE SCREEN##
CTRL-a c
New screen “tab”/session
CTRL-a n
Next “tab”
CTRL-a p
Prev “tab”
CTRL-a N
Go to tab N
CTRL-a "
Tab list
exit
exit current tab
CRTL-d
exit current tab
CTRL-a A
Change Current tab name
CRTL-a d
de-attach screen
CRTL-a C
clear current tab screen
CRTL-a l
reset current tab screen
CTRL-a K
Destroy (literally) current tab
##SPLITTING##
CTRL-a S
Split current tab horizontally
CTRL-a |
Split current tab vertically
CTRL-a <tab>
Switch to next region
CTRL-a X
Close current region
##COPY/PASTE##
CTRL-a <esc>
Enter copy mode
<Space>
Begin selection (use arrows to move)
<Enter>
Finish selection and copy
CTRL-a ]
Paste
CTRL-a >
Write clipboard to file /tmp/screen-exchange
CTRL-a <
Read /tmp/screen-exchange to clipboard
CTRL-a =
Remove /tmp/screen-exchange but no clipboard content
##SCROLL##
CTRL-a <esc>
Enter copy mode
AvPag
Advance 1 page
RePag
Previous page
Inicio
Go to the 1st line of scroll
Fin
Go to the last line of scroll (actual one)
CRTL+r <SEARCH STRING>
Enter Search mode (begin writing), then

CRTL+r

to go to the previous ressult

/<SEARCH STRING>
Enter VIM-like search

Howto: Postfix

Nov-1-2009 By dodger

He publicado otro howto, en este caso de postfix.
He de decir que ahora me explico por qué la gente usa sistemas como "zimbra" que es un "all-in-one", solo te tienes que descargar la suite, instalar y configurar un par de cosas, el resto va casi todo solo (otra cosa es que después funcione como tú quieres)…
Mi conclusión es que no es para nada trivial el funcionamiento de un sistema de correo "decente", es decir, multiusuario-multidominio, con unas interfaces "amistosas" y que realmente, funcione…
La verdad es que mi intención no es la de hacer un relay de correo y no entro en temas de tunning del servidor, solo en la instalación básica que ya tiene suficiente chicha, la verdad.
Espero que si alguien se encuentra en alguna encrucijada, este howto le ayude, por que yo la verdad me he tenido que empapar de unos cuantos…

Howto – Compilar php

Jul-7-2009 By dodger

En el siguiente documento trato sobre la compilación de php, con muchas de las opciones disponibles.
Hay que decir que cada php es un mundo a la hora de compilar, todo depende de lo que queramos incluir.
A modo de resumen en el howto trato:

  1. Dependencias típicas
  2. Compilación de extensiones mediante diversos métodos
  3. Compilación con soporte Oci8 (oracle)
  4. Compilación con soporte Imap
  5. Configuración de la extension “Zend Optimizer”
  6. Ejemplos para comprobaciones

Lo que viene siendo un documento de la leche intentando llegar a todos los puntos.
No trato el tema de opciones para rendimiento ni seguridad de php.ini solo la compilación.

https://www.ciberterminal.net/mediawiki/index.php/PHP_full_compile_howto

Mini HOWTO para lirc

Jun-30-2009 By dodger

Fruto de las “investigaciones” y las ganas de tener un controlador infrarrojos “universal”
(y opensouce :D), he escrito este mini-howto para entender lo que pide LIRC
al configurar nuestro mando a distancia, ya que puede ser bastante caótico o escueto
(incluyendo su documentación oficial):