Buscar este blog

viernes, 20 de marzo de 2009

La hora de la tierra

este 28 de marzo a las 8:30 PM se realizara un evento a nivel mundial

la hora de la tierra, que consiste en apagar las luces y desconectar aparatos eléctricos por una hora, y así darle un respiro energético a nuestro maltrecho planeta, si algo podemos hacer hagamoslo no!

y de todos modos en lo obscuro también se pasa bien.

Sign up for Earth Hour

jueves, 12 de marzo de 2009

Torpedo Linea de comandos Linux Unix

Por el post anterior, me dí cuenta que me faltaba un torpedo, para recordar los comandos básicos de Linux en la consola.
Suele pasar que entre mas utilizas la interfase gráfica (GUI) o las herramientas basadas en web se te empieza a atrofiar el hemisferio Linux de el cerebro y no te acuerdas de todos esos simples y rápidos comandos que te entregaban o solucionaban tus requerimientos.

Bueno aquí le dejo una que encontré y es bastante completa y no tan básica


ComandoDescripción
apropos palabraVer comandos relacionados con palabra. Ver también threadsafe

which comandoVer la ruta completa de comando

time comandoMedir cuanto tarda comando
time catIniciar cronómetro. Ctrl-d para detenerlo. Ver también sw
nice infoLanzar comando con prioridad baja (info en este ejemplo)
renice 19 -p $$Darle prioridad baja al shell (guión). Usar para tareas no interactivas
dir navegación
cd -Volver al directorio anterior
cdIr al directorio personal (home)

(cd dir && comando)Ir a dir, ejecutar comando y volver al directorio inicial
pushd .Guardar el directorio actual en la pila para luego, poder hacer popd y volver al mismo
alias l='ls -l --color=auto'listado de directorio rápido
ls -lrtListar archivos por fecha. Ver también newest
ls /usr/bin | pr -T9 -W$COLUMNSImprimir 9 columnas en ancho de la terminal

find -name '*.[ch]' | xargs grep -E 'expre'Buscar 'expre' en este directorio y subdirectorios. Ver también findrepo

find -type f -print0 | xargs -r0 grep -F 'ejemplo'Buscar 'ejemplo' en todos los archivos regulares en este directorio y subdirectorios

find -maxdepth 1 -type f | xargs grep -F 'ejemplo'Buscar 'ejemplo' en todos los archivos regulares de este directorio

find -maxdepth 1 -type d | while read dir; do echo $dir; echo cmd2; doneProcesar cada elemento con muchos comandos (con un bucle while)
find -type f ! -perm -444Hallar archivos sin permiso general de lectura (util para sedes web)
find -type d ! -perm -111Hallar directorios sin permiso general de acceso (util para sedes web)
locate -r 'file[^/]*\.txt'Buscar nombres en indice en cache. Este re es igual a glob *file*.txt
look referenciaBúsqueda rápida (ordenada) de prefijo en diccionario
grep --color referencia /usr/share/dict/palabrasResaltar ocurrencias de expresión regular en diccionario
archivos

gpg -c fileEncriptar archivo

gpg file.gpgDesencriptar archivo

tar -c dir/ | bzip2 > dir.tar.bz2Crear archivo compacto de dir/

bzip2 -dc dir.tar.bz2 | tar -xExtraer archivo compacto (usar gzip en vez de bzip2 para archivos tar.gz )

tar -c dir/ | gzip | gpg -c | ssh user@remoto 'dd of=dir.tar.gz.gpg'Crear compactado encriptado de dir/ en equipo remoto

find dir/ -name '*.txt' | tar -c --files-from=- | bzip2 > dir_txt.tar.bz2Crear compactado de subconjunto de dir/ y subdirectorios

find dir/ -name '*.txt' | xargs cp -a --target-directory=dir_txt/ --parentsCopiar subconjunto de dir/ y subdirectorios

( tar -c /dire/de/copiame ) | ( cd /este/dir/ && tar -x -p )Copiar (con permisos) directorio copiame/ a directorio /este/dir/

( cd /dire/de/copiame && tar -c . ) | ( cd /este/dir/ && tar -x -p )Copiar (con permisos) contenido del directorio copiame/ a directorio /este/dir/

( tar -c /dire/de/copiame ) | ssh -C user@remoto 'cd /este/dir/ && tar -x -p' Copiar (con permisos) directorio copiame/ a directorio remoto /este/dir/

dd bs=1M if=/dev/hda | gzip | ssh user@remoto 'dd of=hda.gz'Respaldo de disco duro en equipo remoto
rsync (Usar la opción --dry-run para probarlo)

rsync -P rsync://rsync.servidor.com/ruta/a/archivo archivoObtenerr solo diffs. Repetir muchas veces para descargas conflictivas

rsync --bwlimit=1000 desdearchivo alarchivoCopia local con taza límite. Parecido a nice para E/S (I/O)

rsync -az -e ssh --delete ~/public_html/ remoto.com:'~/public_html'Espejo de sede web (usando compresión y encriptado)

rsync -auz -e ssh remote:/dir/ . && rsync -auz -e ssh . remote:/dir/Sincronizando directorio actual con uno remoto
wget (herramienta de descargas multiuso)
(cd cmdline && wget -nd -pHEKk http://www.pixelbeat.org/cmdline.html) Guardar en directorio actual una versión navegable de una página web

wget -c http://www.ejemplo.com/largo.archivo Retomar descarga de un archivo parcialmente descargado

wget -r -nd -np -l1 -A '*.jpg' http://www.ejemplo.com/ Descargar una serie de archivos en el directorio actual

wget ftp://remoto/archivo[1-9].iso/FTP permite globalizaciones directas
wget -q -O- http://www.pixelbeat.org/timeline.html | grep 'a href' | headProcesando directamente la salida

echo 'wget url' | at 01:00Descargar la url a 1AM al directorio en que esté

wget --limit-rate=20k urlHacer descargas de baja prioridad (en este caso, no exceder los 20KB/s)

wget -nv --spider --force-html -i bookmarks.htmlRevisando los enlaces de una página

wget --mirror http://www.ejemplo.com/Actualizar eficientemente una copia local de una página web (útil si usamos cron)
redes (Nota los comandos ifconfig, route, mii-tool, nslookup son obsoletos)

ethtool interfaceListar estado de interfase
ip link showListar interfases

ip link set dev eth0 name wanRenombrar eth0 a wan

ip addr add 1.2.3.4/24 brd + dev eth0Agregar ip y máscara (255.255.255.0)

ip link set dev interface upSubir (o bajar) la interfase

ip route add default via 1.2.3.254Establecer 1.2.3.254 como valor por omisión para la puerta de enlace.
tc qdisc add dev lo root handle 1:0 netem delay 20msecAgregarle 20ms de espera al dispositivo de retorno (para hacer pruebas)
tc qdisc del dev lo rootQuitar la espera agregada antes.
host pixelbeat.orgObtener la dirección ip para el dominio o al revés
hostname -iObtener la dirección ip local (equivale al anfitrión `hostname`)
netstat -tuplListar los servicios de internet de un sistema
netstat -tupListar las conexiones activas de/hacia un sistema
windows (nota samba es el paquete que permite todos estos comandos de redes de windows )
smbtreeHallar equipos windows. Ver también findsmb

nmblookup -A 1.2.3.4Hallar el nombre (netbios) de windows asociado con la dirección ip

smbclient -L windows_boxListar archivos compartidos en equipos windows o servidor samba

mount -t smbfs -o fmask=666,guest //windows_box/share /mnt/shareMontar un directorio compartido

echo 'mensaje' | smbclient -M windows_boxEnviar mensaje emergente al equipo windows (desactivado por omisión en XP sp2)
math
echo '(1 + sqrt(5))/2' | bc -lCuentas rápidas (Calcular φ). Ver también bc
echo 'obase=16; ibase=10; 64206' | bcConversiones de base (decimal a hexadecimal)
echo $((0x2dec))Conversiones de base (hex a dec) ((expansión aritmética del shell))
echo 'pad=20; min=64; (100*10^6)/((pad+min)*8)' | bcMas complejo (int) x.ej. Ejemplo: tasa máxima de paquetes FastE
echo 'pad=20; min=64; print (100E6)/((pad+min)*8)' | pythonPython maneja notación científica
echo 'pad=20; plot [64:1518] (100*10**6)/((pad+x)*8)' | gnuplot -persistGraficar tasa de paquetes FastE vs. tamaño de paquetes
seq 100 | (tr '\n' +; echo 0) | bcAgregar una columna de números. Ver también add y funcpy
manejo de textos (nota: como sed usa stdin y stdout, para editar archivos, agregar... nuevoarchivo)

sed 's/cadena1/cadena2/g'Remplaza cadena1 por cadena2

sed 's/\(.*\)1/\12/g'Modificar cualquiercadena1 con cualquiercadena2

sed '/ *#/d; /^ *$/d'Quitar comentarios y lineas en blanco

sed ':a; /\\$/N; s/\\\n//; ta'Concatenar lineas con \ al final

sed 's/[ \t]*$//'Quitar blancos finales de las lineas

sed 's/\([\\`\\"$\\\\]\)/\\\1/g'Escapar metacaracteres activos del shell dentro de comillas dobles

sed -n '1000p;1000q'Listar la línea 1000°

sed -n '10,20p;20q'Listar de la linea 10 a la 20

sed -n 's/.*\(.*\)<\/title>.*/\1/ip;T;q'Extraer titulo de página web en HTML

sort -t. -k1,1n -k2,2n -k3,3n -k4,4nSort de direcciones ip de tipo IPV4
echo 'Test' | tr '[:lower:]' '[:upper:]'Conversión de cajas
tr -dc '[:print:]' < /dev/urandomFiltrando caracteres no imprimibles
grep 'processor' /proc/cpuinfo | wc -lContar lineas
definir operaciones (Nota export LANG=C es para acelerar, aquí también se supone que no hay líneas duplicadas en los archivos)

sort archivo1 archivo2 | uniqUnion de archivos sin ordenar

sort archivo1 archivo2 | uniq -dIntersección de archivos sin ordenar

sort archivo1 archivo1 archivo2 | uniq -uDiferencia de archivos sin ordenar

sort archivo1 archivo2 | uniq -uDiferencia Simétrica de archivos sin ordenar

comm archivo1 archivo2 | sed 's/^\t*//'Unión de archivos ordenados

comm -12 archivo1 archivo2Intersección de archivos ordenados

comm -13 archivo1 archivo2Diferencia de archivos ordenados

comm -3 archivo1 archivo2 | sed 's/^\t*//'Diferencia Simétrica de archivos ordenados
calendario
cal -3Mostrar calendario
cal 9 1752Mostrar calendario para mes y año determinado
date -d friQue día cae este viernes. Ver también day
date --date='25 Dec' +%A¿En que día cae la Navidad, este año?
date --date '1970-01-01 UTC 1234567890 seconds'Convertir total de segundos desde la época a una fecha
TZ=':America/Los_Angeles' date¿Que hora es en la Costa Oeste de EEUU (usar tzselect para hallar TZ)

echo "mail -s 'tomar el tren' P@draigBrady.com < /dev/null" | at 17:45Recordatorio por email
echo "DISPLAY=$DISPLAY xmessage cooker" | at "NOW + 30 minutes"Recordatorio emergente
locales
printf "%'d\n" 1234Imprimir numero agrupado por miles de acuerdo a su locale
BLOCK_SIZE=\'1 ls -lpedir que ls agrupe por miles de acuerdo a su locale
echo "Yo vivo en `locale territory`"Extraer información de la base de datos del locale
LANG=en_IE.utf8 locale int_prefixBuscar información de locale para determinado país. Ver también ccodes
locale | cut -d= -f1 | xargs locale -kc | lessListar campos en base de datos del locale
recode (obsoletos: iconv, dos2unix, unix2dos)
recode -l | lessVer conversiones disponibles (aliases en cada línea)

recode windows-1252.. archivo_a_cambiar.txt"ansi" de Windows a tabla de caracteres locales (auto hace conversión CRLF)

recode utf-8/CRLF.. archivo_a_cambiar.txtutf8 de Windows a tabla de caracteres locales

recode iso-8859-15..utf8 archivo_a_cambiar.txtLatin9 (Europa oriental) a utf8

recode ../b64 <> archivo.b64Codificado Base64

recode /qp.. <> archivo.qpDecodificado de citas imprimibles (qp)

recode ..HTML <> archivo.htmlTexto a HTML
recode -lf windows-1252 | grep euroBuscar tabla de caracteres
echo -n 0x80 | recode latin-9/x1..dumpMostrar representación de un código en tabla de caracteres latin-9
echo -n 0x20AC | recode ucs-2/x2..latin-9/xVer codificado latin-9
echo -n 0x20AC | recode ucs-2/x2..utf-8/xVer codificado utf-8
CDs

gzip < /dev/cdrom > cdrom.iso.gzGuardar una copia de los datos de cdrom

mkisofs -V NOMBRE -r dir | gzip > cdrom.iso.gzCrear imagen de cdrom con el contenido de dir

mount -o loop cdrom.iso /mnt/dirMontar la imagen cdrom en /mnt/dir (solo lectura)

cdrecord -v dev=/dev/cdrom blank=fastLimpiar un CDRW

gzip -dc cdrom.iso.gz | cdrecord -v dev=/dev/cdrom -Grabar un cdrom con imagen (usar dev=ATAPI -scanbus para confirmar ruta dev)

cdparanoia -BExtraer pistas de audio desde un CD a archivos wav en directorio actual

cdrecord -v dev=/dev/cdrom -audio *.wavArmar un CD de audio con todos los wavs en directorio actual (ver también cdrdao)

oggenc --tracknum='pista' pista.cdda.wav -o 'pista.ogg'Crear un archivo ogg con un archivo wav
espacio de disco (Ver también FSlint)
ls -lSrMostrar archivos, de menor a mayor
du -s * | sort -k1,1rn | headMostrar usuarios de disco principales en el directorio actual. Ver también dutop
df -hMostrar espacio libre de disco
df -iMostrar inodos libres
fdisk -lMostrar tamaños y tipos de particiones de disco (pedir como root)
rpm -q -a --qf '%10{SIZE}\t%{NAME}\n' | sort -k1,1nListar todos los paquetes por tamaño instalado (Bytes) de distribuciones RPMs
dpkg-query -W -f='${Installed-Size;10}\t${Package}\n' | sort -k1,1nistar todos los paquetes por tamaño instalado (Kbytes) de distribuciones deb
dd bs=1 seek=2TB if=/dev/null of=ext3.testCrear un gran archivo de prueba (sin ocupar espacio). Ver también truncate
monitoreo/rastreo
strace -c ls >/dev/nullResumir/perfil de llamadas al sistema hechas con comando
strace -f -e open ls >/dev/nullListar llamadas al sistema hechas con comando
ltrace -f -e getenv ls >/dev/nullListar llamadas a librerías hechas con comando
lsof -p $$Listar las rutas que abrió el id de proceso
lsof ~Listar procesos que solicitaron apertura de rutas
tcpdump not port 22Ver tráfico de redes excepto ssh. Ver también tcpdump_not_me
ps -e -o pid,args --forestListar procesos de una jerarquía
ps -e -o pcpu,cpu,nice,state,cputime,args --sort pcpu | sed '/^ 0.0 /d'Listar procesos por % de uso de cpu
ps -e -orss=,args= | sort -b -k1,1n | pr -TW$COLUMNSListar procesos por uso de memoria. Ver también ps_mem.py
ps -C firefox-bin -L -o pid,tid,pcpu,stateListar todos los hilos de un proceso determinado
ps -p 1,2Listar información de un ID determinado
last rebootVer historia de reencendido del sistema
free -mVer cantidad de RAM (que queda) (-m muestra en MB)
watch -n.1 'cat /proc/interrupts'Observar continuamente los datos que van cambiando
información del sistema (Ver también sysinfo)

hdparm -i /dev/hdaVer informe sobre partición hda

hdparm -tT /dev/hdaHacer una prueba de velocidad de lectura en partición hda

badblocks -s /dev/hdaHallar bloques ilegibles en partición hda
mount | column -tVer particiones montadas en el sistema (y alinear la salida)
cat /proc/partitionsVer todas las particiones registradas en el sistema
grep MemTotal /proc/meminfoVer el total de RAM que registra el sistema
grep "model name" /proc/cpuinfoVer informe de CPU(s)
lspci -tvVer informe de PCI
lsusb -tvVer informe de USB
interactivo
mcPoderoso administrador de archivos que permite navegar por rpm, tar, ftp, ssh, ...
screenTerminales virtuales con capacidad de reacomodamiento, ...
linksNavegador web
gnuplotGraficos interactivos/ programables
octaveEntorno parecido a Matlab
Miscellaneous
alias hd='od -Ax -tx1z -v'Práctico vuelco hexa. (uso x.ej.: • hd /proc/self/cmdline | less)
alias realpath='readlink -f'Canonicalizar ruta. (uso x.ej.: • realpath ~/../$USER)
set | grep $USERBuscar en el entorno actual

touch -c -t 0304050607 archivoAsignarle a archivo la fecha (AAMMDDhhmm)
python -m SimpleHTTPServerServe current directory tree at http://$HOSTNAME:8000/


gracias a www.pixelbeat.org


¿como saber que ubuntu hay instalado en una maquina remota?

nunca me había pasado que necesitara ver que versión de ubuntu, RHEL, o otra distribución de linux tiene instalada un pc remoto, y buscando encontré varias soluciones pero la mas sencilla es la siguiente
en la maquina remota ejecutas el siguiente comando

#tail /etc/issue
Ubuntu 8.04.2 \n \l

en mi caso ese es la respuesta pero en otras maquinas varia un poco

CentOS release 3.9 (Final)
Kernel \r on an \m

Los ficheros /etc/issue y /etc/issue.net son los que contienen el texto que te aparece en cada petición de login y como este mensaje es modificado cada ves que se realiza un upgrade que afecte a la versión, siempre tiene el dato que requiero. :-)

viernes, 6 de marzo de 2009

Instalación de GroundWork Community Edition v5.3.0

Instalación de GroundWork Community Edition v5.3.0

GroundWork es una herramienta creada en torno a
Nagios, la que integra una serie de software para la la administración, control y apoyo a Nagios, Cacti, Ganglia, Nagios, NeDi, RRDtool , en un a sola interfase basada en web, basta de modificar los archivos de nagios a manito, con esto todo se simplifica, aunque siempre es necesario saber como trabaja Nagios para que puedas entender como trabaja GroundWork.
Bueno vamos manos a la obra
la instalación la realice en Ubuntu 8.04.2 y los requerimientos de software son:

nada

todo lo necesario viene integrado en el binario de instalación GroundWork
es recomendable instalarlo en un server limpio y que no comparta maquina con otros servidores, bases de datos, web, correo, etc.

descarga el binario de http://www.groundworkopensource.com/community/downloads/

darle permisos de ejecución

#chmod +x groundwork-5.3.0-br46-gw333-linux-32-installer.bin

procedamos con la instalación

#./groundwork-5.3.0-br46-gw333-linux-32-installer.bin

esto ejecuta la instalación en modo GUI o grafico

van a salir al comienzo una serie de pantallas recomendando unos determinados requerimientos para el pc, solicita 4 Gb de RAM, 160GB espacio en el disco, y 2 CPU de 3000Mhz, en lo personal creo que exagera, hasta donde lo he probado no instala en menos de 1Gb de ram, sobre esto instala sin problemas y los otros parámetros son advertencias.
1-. ventana del setup presionar Adelante
2-. ventana pide una password para el usuario root del mysql ---> Adelante
3 -. ventana del EULA o licencia seleccionar I accept... ---> Adelante ---> Adelante
4 -. ventana notification component seleccionar yes ---> Adelante

después de un rato de instalar todos los servicios y componentes termina el proceso y inicia los servicios.

Para conectarse a la interfase web http://localhost , te pide usuario y contraseña los que son
Username: admin
Password: admin

hay una demo en http://www.groundworkopensource.com/demo/

para conocer sobre la operación y configuración consulta los foros http://www.groundworkopensource.com/community/forums/

ahora lo que queda es configurar para monitorizar los servers o equipos que desees.

mi experiencia con GroundWork ha sido buena, la facilidad con que agregas maquinas y servicios a monitorizar, es realmente útil a la hora de administrar una red grande donde tienes servidores tanto en tu red local como en otros sites, como herramienta para administradores de sistemas es un gran aporte.

links:
http://www.groundworkopensource.com

martes, 3 de marzo de 2009

El show de juanelo

Este es un blog dedicado al un curioso personaje JUANELO, creado por Marco Canepa, este es un personaje con una agudeza social y contingente única, es el fiel reflejo de la patudez, y cara de raja de nuestra sociedad, tiene una mirada critica de los eventos contingentes con una mirada de humor, me encanta, de echo imprimo las mejores y la pongo en el diario mural del departamento.

Esta bajo licencia Creative Commons, no podía ser de otra manera.


http://www.juanelo.cl
no se lo pierdan