LOG DE SQUID EN PYTHON PARTE II

•enero 22, 2012 • 1 comentario

Continuando con el post anterior acerca del Log de Squid vamos ahora a seguir esta vez ya con codigo Python, anteriormente hablamos de una serie de pasos para lograr nuestro objetivo, los primeros pasos que haciamos eran los siguientes:

El script hace una conexión via ssh al servidor squid y realiza lo siguiente:

1- Detiene el el squid.

2- renombra el archivo *”/var/log/squid3/access.log”* por *access_fechahoy.log*.

3- Crea un nuevo archivo access.log.

4- Le da los permisos al nuevo archivo creado access.log.

5- Inicia de nuevo el servidor Squid.

6- Copiar el desde el pc Remoto el Archivo *access_fechahoy.log* al pc local,

Para poder realizar los pasos del 1 al 6 es necesario realizar una connexion SSH con python, yo utilice el Modulo Externo “paramiko ” , este modulo no esta en las librerias internas de Python por tal motivo es necesario instalarlo aparte, para el caso de debian se consigue simplemente haciendo como root un simple:

#aptitude install python-paramiko

Si no lo tienes puedes ubicarlo con easy_install o directamente de su pagina http://www.lag.net/paramiko/

Un Ejemplo en python seria el siguiente:

ssh = paramiko.SSHClient()

ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())

servidor = ’192.168.1.104′

puerto = 22

usuario = ‘usuario_ssh’

clave = ‘clave_ssh’

try:

ssh.connect(servidor, port=puerto, username=usuario, password=clave)

except:

print ‘Conectado hacer algo’

Luego que ya hallamos establecido la conexion SSH procedemos a realizar los pasos 1 – 6

Para ejecutar comandos en el pc remoto via SSH se utiliza el metodo exec_command(‘comando’) , lo cual nos queria de la siguiente manera:

stdin, stdout, stderr = x.exec_command(‘/etc/init.d/squid3 stop’)

stdin, stdout, stderr = x.exec_command(‘mv %s %s’ % (‘acces.log’, ‘access_fechahoy.log’))

stdin, stdout, stderr = x.exec_command(‘echo > %s’ % (‘acces.log’))

stdin, stdout, stderr = x.exec_command(‘chown proxy:proxy %s’ % (‘accesd.log’))

stdin, stdout, stderr = x.exec_command(‘/etc/init.d/squid3 start’)

si al momento de ejecutar exec.command() genera un error este se guardara en

en la variable stderr y podemos ver el error de la manera siguiente

error = stderr.read()

print error

Si todo marcha bien entonces procedemos a copiar el log remoto al pc local para poder trabajarlo localmente, para copiar un archivo via ssh utilizamos el metodo open_sftp() se la siguiente manera:

ftp = ssh.open_sftp()

ftp.get(‘/var/log/squid3/access.log’, ‘access_fechahoy.log’)

ftp.close()

ssh.close()

Espero les pueda servir este post, continuaremos en otra oportunidad con mas de LOG DE SQUID EN PYTHON

y optimizar un poco el código hoy mostrado

 LOG DE SQUID …

•enero 6, 2012 • 1 comentario
 
LOG DE SQUID EN PYTHON PARTE I
En mi proceso de aprendizaje de python me propuse a desarrollar el siguiente script :
Script que permite obtener via SSH el log de navegacion que genera
el servidor proxy squid y copiarlo localmente al pc que lo llama o ejecuta para luego e ingresarlo en una Base de Datos PostGreSql o Sqlite y de esta manera sea mas facil realizar consultas de lo que están haciendo los usuario con el Internet , bien sea consultando las paginas a las que accedan, la fecha, las horas, los accesos denegados y otras cosas mas. La verdad confieso que comenzó siendo algo corto  y sencillo pero lo e ido puliendo y ya van algunas lineas de código :P

- La teoría:

 
El script hace una conexión via ssh al servidor squid y realiza lo siguiente:
 
- Detiene el el squid
 
- renombra el archivo *”/var/log/squid3/access.log”* por  *access_fechahoy.log*
 
- Crea un nuevo archivo access.log
 
- Le da los permisos al nuevo archivo creado access.log
 
- Inicia de nuevo el servidor Squid
 
- Copia vía ssh el archivo  *access_fechahoy.log* desde el servidor a la maquina local que hizo el llamado.
 
- Abro el archivo local  *access_fechahoy.log*  y leo linea por linea separando de cada linea aquellas palabras que tengan un espacio entre ellas y las guardo en una lista de python Ej: 1325523994.041     12 10.121.3.34 TCP_IMS_HIT/304 291 GET http://www.panorama.com.ve/uploads/ojos(1).swf – NONE/- application/x-shockwave-flash.
 
- Limpio de ese resultado aquellos valores que devolvieron espacios sin datos es decir vacios Ej: ’10410021221′, ‘ ‘, ‘ ‘
 
- Ahora recorro la lista y extraigo cada campo  fecha,puerto,ip,acceso, método,direccionweb.
 
- Luego transformo la hora que coloca squid  ”10410021221″ en formato fecha hora normal ddmmaaaa hhmmss.
 
- Mediante un metodo transformo la ip que me da squid en el nombre del pc 
 
- Por ultimo inserto el registro en postgresql o sqlite

Módulos Utilizados:

psycopg2 : Para conectarse a una base de datos PostGresql
socket : Para obtener el nombre de un pc via socket
paramiko : Para conectarse via ssh a un pc remoto
time : Para obtener la fecha actua
 
NOTA:ESTO SE EJECUTA COMO UN PROCESO EN LAS MADRUGADASl

Los números de 2011 para el Blog Foxcarlos

•enero 2, 2012 • Dejar un comentario

Los duendes de las estadísticas de WordPress.com prepararon un reporte para el año 2011 de este blog.

Aqui es un extracto

La sala de conciertos de la Ópera de Sydney contiene 2.700 personas. Este blog fue visto cerca de 12.000 veces en 2011. Si fuese un concierto en la Ópera, se necesitarían alrededor de 4 actuaciones agotadas para que toda esa gente lo viera.

Haz click para ver el reporte completo.

Script en PYTHON que permite saber el nombre del pc partiendo de la direccion IP suministrada

•diciembre 28, 2011 • 1 comentario

#! /usr/bin/env python

”’
Script que permite saber el nombre del pc
partiendo de la direccion IP suministrada
”’

import socket

def buscar_nombre():
”’
Funcion que permite mediante el modulo socket
obtener el nombre del pc pasado por el usuario
”’

ip = raw_input(“Ingrese la Direccion IP del PC:”)
try:
nombrepc = socket.gethostbyaddr(ip)
return nombrepc[0]
except:
return ‘** ERROR ** No se pudo resolver el nombre del Host’

if __name__ == ‘__main__’:
nombrepcdevuelto = buscar_nombre()
print(“El nombre del PC es:%s”%(nombrepcdevuelto))
raw_input(“Presione [ENTER] para Salir”)

Scripts en Python para respaldar base de datos en postgrtesql desde Linux

•diciembre 17, 2011 • 2 comentarios

Continuar leyendo ‘Scripts en Python para respaldar base de datos en postgrtesql desde Linux’

Instalar Modulos Python de manera rapida en Debian / Ubuntu

•abril 3, 2011 • Dejar un comentario

Existe una forma sencilla y rapida de instalar un modulo en Python en Debian / Ubuntu, para hacerlo es necesario que instalemos el paquete :
# apt-get install python-setuptools, luego de esto imaginemos que necesitamos instalar el modulo pymongo, en cosola escribimos como usuario root lo siguiente : easy_install pymongo , listo ya tenemos nuestro modulo instalado

Entendiendo y Aprendiendo SSH de Manera Fácil.

•julio 14, 2009 • 2 comentarios

Entendiendo y Aprendiendo SSH de Manera Fácil.

openssh

Desde que ando con esto de Linux me atrevería a decir que una de las herramientas que mas me a sacado de apuros por su practicidad y facilidad de uso es SSH (Secure SHell, en español: intérprete de órdenes seguro), para que lo entiendan mejor esto no es mas que un programa que permite conectarte de manera segura a otro computador y poder acceder de manera remota a el bien sea de manera gráfica o por un terminal de comandos, no quiero que se confundan cuando digo acceder de manera remota a un pc con ver en tiempo real lo que la otra persona este haciendo del otro lado del pc, esto va mucho mas allá, ya que con SSH puedo hacer muchas cosas útiles con una conexión remota a un computador. Como ejemplo practico les puedo decir que tengo algunos amigos que aun cuando no saben nada de Linux han decidido dar el gran salto y cambiar debido a los incansables virus que azotan su Sistema Operativo Windows Vista o Windows XP por una distribución de Linux y aunque reconozco que el cambio no puede ser fácil puesto que luego de pasar tantos años acostumbrados a Windows la resistencia al cambio suele apoderarse en algún momento de la persona y es allí cuando salgo yo a relucir como la persona responsable que les hizo dar ese gran salto de Windows XP a Linux y como no se me hace fácil movilizarme hasta la casa de alguno de ellos porque hay casos en los cuales se encuentran en ciudades diferentes debo recurrir a la Herramienta SSH para poder darle respuestas a todas sus inquietudes así como también solucionar ciertas fallas que se puedan presentar, de hecho, me atrevo a decir que las probabilidades de tener que ir hasta su casa para solucionar una falla cuando tienen instalado Linux seria de apenas un 10% ya que casi todo me permite hacerlo de manera remota y conste que no me refiero solo a fallas sino también al momento de instalar aplicaciones nuevas,reiniciarle el Computador, ver la Información que tiene,Copiarme información del pc Remoto al nuestro y muchas cosas mas.

Para entendernos un poco mejor simularemos un caso donde pcFox y pcAmigo interactúen tomando en cuenta que ambos se encuentran en ciudades diferentes los 2 tienen una conexión a internet y ambos tienen Sistema Operativo Linux (para el caso de conexión desde un PC con Windows -> a un PC con Linux en la próxima parte)

Entonces que necesitamos?.

  • PcFox (con Linux)

  • pcAmigo (con Linux)

  • Tener SSH instalado en ambos Computadores

  • Debes conocer la Dirección IP del Computador al cual te quieres conectar o PC Remoto (pcAmigo) si tu amigo no sabe cual es la IP indicale que la puede ubicar entrando a esta pagina.

    http://www.my-ip.es/

  • Es necesario que tu amigo te indique cual es su nombre de usuario con el que inicia sesión en el Computador

Como instalar SSH en el pc de nuestro amigo o el nuestro en caso de que queramos en algún momento conectarnos a nuestro Computador desde otra localidad?

Abrir un Interprete de Ordenes,Consola o Terminal de Comandos como administrador y ejecutar si tienes Debian o Ubuntu lo siguiente:

# aptitude install openssh-server openssh-client

Ya instalado procedemos a configurar a nuestro gusto , como queremos que se comporte y métodos de conexión que aceptara, esto es muy importante ya que editando el archivo de configuración podemos proteger el computador de intrusos no deseados y malintencionados, SSH es seguro pero si te equivocas puedes quedar vulnerable, abrimos una Consola y como Administrador editamos el archivo de configuración sshd_config ubicado en /etc/ssh/:

# gedit /etc/ssh/sshd_config

Tendremos un archivo con varias opciones de configuración en las cuales aparecen inhabilitadas las que tienen un Carácter # al comienzo y de ser necesario tendremos que quitarle el carácter # para poder habilitar dicha opción, a continuación mostrare las mas comunes y el resto dejarlas como están .

# Por cual puerto queremos que se conecte, por defecto se usa el 22 pero por seguridad tu puedes colocar el que desees

Port 22

#Que Protocolo deseas usar, antes se utilizaba el 1, actualmente se deja en 2

Protocol 2

#Tiempo que tardara el usuario en conectarse

LoginGraceTime 120

#Permitir al usuario administrador hacer ssh colocad No

PermitRootLogin no

#Si quieres poder hacer una conexión gráfica colocar yes en X11Forwarding

X11Forwarding yes

Guardamos el archivo de configuración y reiniciamos el servidor SSH desde la consola.

# /etc/init.d/ssh restart

Conociendo y teniendo ya todo podemos dar inicio a la serie de ejemplos prácticos, imaginemos que ya obtuvimos la dirección IP del Computador remoto de nuestro amigo (pcAmigo) y que nos dio como resultado 192.168.1.16 y que su nombre de usuario es pedro, procedemos entonces a abrir un terminal o consola y conectarnos al Computador Remoto pcAmigo.

foxcarlos

foxcarlos

Cabe destacar que tenemos varias formas de conectarnos vía ssh tratare de explicar las mas usadas.

  1. Vía Consola o Interprete de Comandos.

    Con esta opción podemos abrir un interprete de comandos o Consola y conectarnos a pcAmigo escribiendo una serie de comandos, luego que ya estemos conectados podemos realizar todas las operaciones que queramos desde nuestro pc (pcFox) pero que serán ejecutadas en el pc Remoto (pcAmigo) tales como instalar aplicaciones,ver toda la información que tiene nuestro amigo,reiniciarle o apagarle el computador y hasta ejecutar programas y aplicaciones. Veamos varios ejemplos.

Ejemplo 1.

Imaginemos que nuestro amigo nos llama y nos dice que cuando le instale Linux no le instale el messenger, es allí donde entra en juego SSH, abrimos una consola o Interprete de Comandos y escribimos lo siguiente:

# ssh NombreUsuarioRemoto@DireccionIP

Que para nuestro ejemplo quedaría

# ssh pedro@192.168.1.16

Si habíamos dejado el puerto por defecto 22 la conexión seria tal cual como la coloque arriba, pero de lo contrario si por seguridad cambiamos el puerto a 1234 entonces quedaría de la siguiente forma:

# ssh -p 1234 pedro@192.1.16

Luego de esto nos pedirá que ingresemos el password del usuario remoto que también deberíamos conocerlo, presionamos la tecla [Enter] y listo aparecerá un mensaje de bienvenida con el prompt del usuario remoto.

PcAmigo:/home/pedro$

Ya nos encontramos conectado al Computador de nuestro amigo ubicado en otra ciudad mediante una Consola o Interprete de Comandos, podemos ver lo que tiene nuestro Amigo en su Computador escribiendo:

$ ls

Ahora todo los comandos que escribamos en esta consola se ejecutaran en el Computador de Nuestro Amigo (pcAmigo). Procedemos entonces a Instalarle el Messneger como Administrador que fue por lo cual nos llamo.

# aptitude install amsn

Luego nos indicara que va a realizar una serie de instalaciones y nos pide autorización, le decimos Yes y presionamos la tecla [Enter], y comenzara el proceso de instalación, al terminar ya le podemos decir a nuestro amigo que ya tiene el Messenger Instalado en su Computador y no fue necesario ir hasta su casa para hacerlo.

Ejemplo 2.

Nuestro Amigo nos llama y nos dice que Salio una nueva versión y requiere que su Computador sea actualizado a la nueva versión y requiere que vamos hasta su casa, nos conectamos de nuevo de la manera siguiente sin necesidad de viajar a su ciudad.

# ssh pedro@192.168.1.16

Y Actualizamos su Computador

# aptitude update

# aptitude safe-upgrade

# aptitude dist-upgrade

No tuvimos que movernos de su casa le reiniciamos su Computador

# reboot

Listo....

Ejemplo 3.

Nos llaman nuevamente y nos dice intentando aprender algunos comandos en Linux ahora no logra escuchar ningún sonido y no sabe que hacer.

# ssh pedro@192.168.1.16

Reconfiguramos el Sonido

# alsaconf

Seguimos los pasos para configurar de nuevo y listo.

  1. Vía Consola o Interprete de Comandos combinado con modo gráfico.

    Otra forma de utilizar conexiones remotas con SSH es la de poder ejecutar aplicaciones que están en un Computador Remoto desde tu Computador de manera gráfica.

Ejemplo 1.

    Nuestro amigo que esta ubicado en otra ciudad nos llama y nos dice que ya tiene el Messenger instalado pero no sabe como configurarlo y requiere que vamos hasta su casa para que lo configuremos, pues es allí donde usaremos SSH desde consola ejecutando una aplicación gráfica remotamente, es sencillo puesto que solo deberemos pasarle unos parámetros a nuestra cadena de conexión de la manera siguiente:

# ssh -X NombreUsuarioRemoto@DireccionIP NombredeAplicacionRemota

# ssh -X pedro@192.168.1.16 amsn

Al ejecutar SSH de esta manera se nos abrirá el Messenger de nuestro amigo en nuestro Computador y podremos manipularlo como si estuviéramos sentados frente al computador de nuestro amigo.

Ejemplo 2.

Nuestro Amigo nos llama y nos dice que necesita grabar unas foto en un CD en blanco pero no ve el programa que antes usaba cuando tenia Windows XP y tiene uno allí que se llama Brasero pero no sabe como usarlo que le haga el favor y le grabe las fotos porque necesita llevarse el CD urgente.

# ssh -X pedro@192.168.1.16 brasero

Luego de ejecutar dicho comando se nos presenta en pantalla la aplicación brasero y solo nos resta decirle a nuestro amigo que inserte el CD en la Unidad grabadora de CD y que nos indique donde se encuentran las fotos que desea copiar.

  1. Accediendo a los archivos y carpetas del Computador remoto de nuestro amigo vía Menú Debian o Ubuntu con modo gráfico.

Tanto en Debian como en Ubuntu se pude conectar con un servidor SSH y poder ver las carpetas que están contenidas dentro de un PC Remoto, para hacer nos vamos al Menú Lugares->Conectar con el Servidor y tendremos la siguiente ventana la cual procedemos a llenar siguiendo el mismo ejemplo de nuestro pcAmigo.

Ya con esto terminamos, espero les sea de gran ayuda

 
Seguir

Get every new post delivered to your Inbox.