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
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.
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.
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.
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
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.