Contar IP y cantidad de accesos en logs de apache

No recuerdo de dónde lo saqué pero acá va:

awk '{!a[$1]++}END{for(i in a) if ( a[i] >10 ) print a[i],i }' ./access-log

Se demoró una fracción de segundo en procesar un log de 500.000 líneas!

Instalar Gnome y Xorg en Centos con yum

Si instalaste un centos sin entorno gráfico y ahora lo necesitas, la solución es:

yum groupinstall "X Window System" "GNOME Desktop Environment"

Yum es sensible a mayúsculas y minúsculas!

No hay lugar como localhost

No hay lugar como localhost

Túnel SSH

(Reviviendo post añejos)

La situación es la siguiente:

Estoy en mi casa, necesito conectarme a la máquina 1.2.3.4, por distintos protocolos (FTP, HTTP, SSH, SFTP), pero la máquina 1.2.3.4 tiene acceso restringido por IP, y sólo la IP 1.2.3.5 tiene acceso. Pero yo puedo entrar por ssh a 1.2.3.5.

Solución: Hacer un túnel SSH.

Cómo ?

Fácil:

ssh -L 10022:1.2.3.4:22 -f -N usuario@1.2.3.5

De esta forma, yo hago ssh a localhost en el puerto 10022 y la conexión es redireccionada a 1.2.3.4, y ya estoy por ssh en la máquina que tenía restringido el acceso :-D

Repetir el proceso para redireccionar más puertos.

Ejemplos:

ssh -L 1025:1.2.3.4:25 -f -N usuario@1.2.3.5
ssh -L 1080:1.2.3.4:80 -f -N usuario@1.2.3.5
ssh -L 10021:1.2.3.4:21 -f -N usuario@1.2.3.5
ssh -L 10110:1.2.3.4:110 -f -N usuario@1.2.3.5

Para puertos menores a 1025 se debe tener privilegios de root.

Configurar Sony Ericsson MD300 de EntelPCS en Ubuntu Intrepid Ibex (Conexión 3g)

La información que aquí publico está tomada básicamente de tres partes (ubuntu-cl.org, laudecioliveira.org y ubuntu-es.org). Ha sido probado con EntelPCS en Chile, y funciona sin problemas :)

Lo primero es ayudar a udev a identificar el módem como tal, para eso necesitamos el id del dispositivo y de vendedor. Esta información la obtenemos así:

sudo lsusb -v|grep -i vendor
 
  idVendor           0x0fce Sony Ericsson Mobile Communications AB
sudo lsusb -v|grep -i product
 
  idProduct          0xd0cf 
  iProduct                2 Sony Ericsson MD300

Ahora creamos el archivo /etc/udev/rules.d/50-md300modem.rules con nuestro editor favorito:

ACTION!="add", GOTO="3G_End"
BUS=="usb", SYSFS{idProduct}=="d0cf", SYSFS{idVendor}=="0fce", PROGRAM="/bin/sh -c 'echo 3 > /sys/%p/device/bConfigurationValue'"
LABEL="3G_END"

Ahora desconectamos el módem y descargamos los módulos del kernel, lo volvemos a cargar con los parámetros que necesitamos

sudo modprobe -r usbserial
sudo rmmod usb_storage
sudo modprobe usbserial vendor=0x0fce product=0xd0cf

Creamos el archivo /etc/modprobe.d/md300 con nuestro editor de texto favorito. Este archivo tendrá un alias para que el módulo se cargue correctamente luego de reiniciar el pc.

#Sony Ericsson MD300
alias md300 usbserial
options md300 vendor=0x0fce product=0xd0cf

Reiniciamos udev:

sudo /etc/init.d/udev restart

Ahora debemos configurar wvdial, editamos el archivo /etc/wvdial.conf

[Dialer Defaults]
Modem = /dev/ttyACM0
ISDN = off
Modem Type = USB Modem
Baud = 460800
Init = ATZ
Init2 = AT+CFUN=1
Init3 = ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0
Init4 = 
Init5 = ATZ+cgdcont=1,"IP","imovil.entelpcs.cl"
Init6 = 
Init7 = 
Init8 = 
Init9 = 
Phone = *99#
Phone1 = 
Phone2 = 
Phone3 = 
Phone4 = 
Dial Prefix = 
Dial Attempts = 1
Dial Command = ATM1L3DT
Ask Password = off
Password = entelpcs
Username = entelpcs
Auto Reconnect = off
Abort on Busy = off
Carrier Check = off
Check Def Route = on
Abort on No Dialtone = on
Stupid Mode = on
Idle Seconds = 0
Auto DNS = on

La línea Init2 = AT+CFUN=1 es para activar la función radio del módem. Sin esta línea, pppd se cierra antes de conectar.

Enchufamos nuevamente el módem, y ejecutamos wvdial para conectarnos a internet:

sudo wvdial

Obtendremos como resultado algo como esto:

--> WvDial: Internet dialer version 1.60
--> Cannot get information for serial port.
--> Initializing modem.
--> Sending: ATZ
ATZ
OK
--> Sending: AT+CFUN=1
AT+CFUN=1
OK
--> Sending: ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0
ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0
OK
--> Sending: ATZ+cgdcont=1,"IP","imovil.entelpcs.cl"
ATZ+cgdcont=1,"IP","imovil.entelpcs.cl"
OK
--> Modem initialized.
--> Sending: ATM1L3DT*99#
--> Waiting for carrier.
ATM1L3DT*99#
~[7f]}#@!}!}!} }9}#}%B#}%}(}"}'}"}"}&} } } } }%}&=;+zZC~
CONNECT
--> Carrier detected.  Starting PPP immediately.
--> Starting pppd at Sun Feb  1 20:21:26 2009
--> Pid of pppd: 8630
--> Using interface ppp0
--> local  IP address 186.9.56.27
--> remote IP address 10.64.64.64
--> primary   DNS address 164.77.252.249
--> secondary DNS address 164.77.252.215

Actualización: Si tienen distribuciones basadas en RPM, pueden bajar este “driver” de betavine (desarrollado por EntelPCS), que básicamente es lo mismo que hice yo a mano, y con algunas pequeñas modificaciones básicamente en el archivo wvdial.conf. Desde ubuntu pueden pasarlo a .deb con alien.

Si prefieren, también pueden usar gnome-ppp para discar. Eso es todo… disfruten ;)

Get VOIP




Get VOIP

Originally uploaded by mringlein

Notable !!

No será mucho digo yo ?

Macros




Diente de León

Originally uploaded by bilsoncl

Macro tomada con una Fujifilm S1000fd…

Nada de mal el modo “super macro” :)

Finalizado el primer semestre

Por fin ! Hoy recibí la última nota que me faltaba, y doy por finalizado el primer semestre … me fue super bien, espero seguir por la buena senda :)

Quitar acentos y caracteres especiales en PHP

Por más que busqué no encontré funciones que quitaran los acentos eficientemente. Las que funcionaban medianamente bien, fallaban cuando los caracteres eran UTF-8, por lo que me puse en campaña, y llegué a esto:

 
	function quitarAcentos($text)
	{
		$text = htmlentities($text, ENT_QUOTES, 'UTF-8');
		$text = strtolower($text);
		$patron = array (
			// Espacios, puntos y comas por guion
			'/[\., ]+/' => '-',
 
			// Vocales
			'/à/' => 'a',
			'/è/' => 'e',
			'/ì/' => 'i',
			'/ò/' => 'o',
			'/ù/' => 'u',
 
			'/á/' => 'a',
			'/é/' => 'e',
			'/í/' => 'i',
			'/ó/' => 'o',
			'/ú/' => 'u',
 
			'/â/' => 'a',
			'/ê/' => 'e',
			'/î/' => 'i',
			'/ô/' => 'o',
			'/û/' => 'u',
 
			'/ã/' => 'a',
			'/&etilde;/' => 'e',
			'/ĩ/' => 'i',
			'/õ/' => 'o',
			'/ũ/' => 'u',
 
			'/ä/' => 'a',
			'/ë/' => 'e',
			'/ï/' => 'i',
			'/ö/' => 'o',
			'/ü/' => 'u',
 
			'/ä/' => 'a',
			'/ë/' => 'e',
			'/ï/' => 'i',
			'/ö/' => 'o',
			'/ü/' => 'u',
 
			// Otras letras y caracteres especiales
			'/å/' => 'a',
			'/ñ/' => 'n',
 
			// Agregar aqui mas caracteres si es necesario
 
		);
 
		$text = preg_replace(array_keys($patron),array_values($patron),$text);
		return $text;
	}

Cualquier comentario es bienvenido.