LOG DE SQUID EN PYTHON PARTE II
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

Hola!
Permíteme presentarme soy Norma administradora de un directorio de blogs, visité tu portal y está interesante, tienes temas muy buenos. Me encantaría poner un link de tu web en mis sitios y así mis visitas puedan visitarlo también. Si estás de acuerdo no dudes en escribirme
mmaribelvidal@gmail.com
Éxitos con tu blog.
Saludos
Maribel.