Borrar todas las carpetas

Posted in Linux, utilidades on Agosto 11th, 2009 by admin – Sé el primero en comentar

Este comando es útil para borrar todas las carpetas de un directorio:

for name in `ls -l|grep ^d| sed -r 's/( )+/ /g'|cut -d ' ' -f 8`; do (rm -rf $name) done

Probado en Ubuntu 8.04

Service v2

Posted in Linux, Servidor, utilidades on Agosto 7th, 2009 by admin – Sé el primero en comentar

La verdad me ha resultado muy útil el script del “service” así que lo he modificado para agregarle un detalle, con esta nueva modificación se pueden iniciar varios servicios en una sola linea por ejemplo:

service apache2 mysql ssh start

En este caso estamos iniciando el servidor apache, mysql y el ssh todo en una linea.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#! /bin/bash
 
nparam=$#
 
if [ $nparam -lt 2 ];
then
 
	echo "Faltan parametros, por los menos debe especificar un servicio (/etc/init.d/) y una accion (start, stop, status, restart)"
 
fi
 
nserv=$(($nparam - 1))
IFS=','
 
for ((i=1; i<=$nserv; i++));
do
 
	service=`echo "$*"| cut -d ',' -f $i`
	ls /etc/init.d/$service > /dev/null  2> /dev/null
 
	if [ $? -gt 0 ];
	then
 
		echo "El servicio $service no existe"
		exit
 
	fi
 
done
 
action=`echo "$*"|cut -d ',' -f $(($nserv + 1))`
 
for ((i=1;i<=$nserv;i++));
do
 
	service=`echo "$*"| cut -d ',' -f $i`
	echo $service
	sudo /etc/init.d/$service $action
 
done

El único problema que encontré fue para listar los parámetros que estoy usando un “for” y:

service=`echo "$*"| cut -d ',' -f $i`

Si alguien conoce una forma mas elegante por favor avise.

Esto lo probé en Ubuntu 8.04.

Numeros aleatorios en consola

Posted in Linux, utilidades on Julio 27th, 2009 by admin – Sé el primero en comentar

Hoy me encontré con el problema de generar números aleatorios en la consola, después de jugar un rato con “/dev/random”, lo logre:

od -An -N2 -i /dev/random

Para generar números aleatorios del 1 al 10 pueden hacer:

echo "(`od -An -N2 -i /dev/random`%10)+1" | bc

¿Y para que sirve esto?
En mi caso fue muy útil, gracias a esto pude decidir que película iba a ver!. Fue fácil puse todas las películas en una lista, y después la magia:

l=$(cat f | wc -l);n=$(echo "(`od -An -N2 -i dev/random`%$l)+1" | bc);cat f | head -n$n | tail -n1

Donde “f” es el archivo con la lista de las películas.

Compartir internet con iptables y messenger

Posted in Configuración, Linux, Servidor on Julio 10th, 2009 by admin – Sé el primero en comentar

Para compartir Internet en una LAN, podemos hacer lo siguiente:

iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o ppp0 -j MASQUERADE

En mi caso “ppp0″ porque tengo un modem-usb, para los que tengan ethernet podria ser “eth0″, depende de la configuración Linux y del hardware que tengan. La IP “192.168.1.0″ es la de la red LAN y el “/24″ es la mascara “255.255.255.0″.

Con esto toda la LAN podía navegar por Internet libremente, el problema apareció en mi caso cuando quisieron iniciar sesión en el “MSN Messenger”. Luego de buscar un rato en Internet, me choque con la solución y para no entrar en mucho detalle agregue esta regla a iptables:

iptables -I FORWARD -o ppp0 -p tcp -m tcp --tcp-flags SYN,RST SYN -m tcpmss --mss 1400:1536 -j TCPMSS --clamp-mss-to-pmtu

Y todos felices.

Esto lo probe en Ubuntu 8.04.

Acelerar Firefox en Linux

Posted in Configuración, Linux, Programas on Junio 27th, 2009 by admin – 2 Comments

Abren una terminal y ejecutan los siguiente:

for f in ~/.mozilla/firefox/*/*.sqlite; do sqlite3 $f 'VACUUM;'; done

Y listo, la proxima vez que ejecuten Firefox deberla iniciar un poco mas rápido.

Yo lo puse en un script y cada tanto lo ejecuto.

Este es un truco que he encontrado en varios blog, lo posteo porque en verdad me dio resultado.

Probado en Ubuntu 8.04 con Firefox 3.0.11

Un “service” en Ubuntu

Posted in Linux, Servidor, utilidades on Junio 24th, 2009 by admin – Sé el primero en comentar

“service” es un script que viene con las distribuciones de “Red Hat”, “Fedora” y sus derivados, que es muy útil para manipular los servicios (iniciar, detener, reiniciar). Lo que hice fue escribir mi propio script para manipular los servicios en Ubuntu.

Acá les dejo el código fuente (perdon por la indentación pero el wordpress no me deja):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#! /bin/sh
 
comando=$1
accion=$2
 
if [ "$comando" = "" ];
then
	echo "Falta el nombre del servicio"
	exit
fi
 
ls /etc/init.d/$comando 2> /dev/null
 
if [ $? -gt 0 ];
then
	echo "El servicio no existe"
	exit
fi
 
if [ "$accion" = "" ];
then
	echo "Falta la accion start/stop/restart/status"
	exit
fi
 
sudo /etc/init.d/$comando $accion

Para usarlo pueden crear el archivo usando:

vim service

Y pegan el código fuente dentro, también pueden crear el archivo por otros medios (por ejemplo usando gedit)

Luego le damos permisos de ejecución:

chmod +x service

Y como root (sudo -s) copiamos el script a:

cp service /usr/bin/

Y listo ahora podemos entrar desde una terminal y probarlo:

service apache2 start

En este caso estamos poniendo a correr apache, para ver una lista de todos los servicios disponibles en nuestras máquinas podemos hacer:

ls /etc/init.d

Yo lo he probado en Ubuntu 8.04, si alguien lo prueba en alguna otra versión de Ubuntu y encuentra problemas avisen o envien las correcciones del script.