Iniciando Agentes sensibles en UNIX bajo python

6 views
Skip to first unread message

Ricardo de Jesús Pelcastre Cervantes

unread,
Mar 25, 2006, 6:30:10 PM3/25/06
to pozarica
Python es un lenguaje de programación interpretado e interactivo,
capaz de ejecutarse en una gran cantidad de plataformas. Fue creado por
Guido van Rossum en 1990.

Python es habitualmente comparado a TCL, Perl, Scheme, Java y Ruby.
Actualmente, Python se desarrolla como un proyecto de código abierto,
administrado por la Python Software Foundation. La última versión
estable del lenguaje es actualmente (enero de 2006) la 2.4.

Guido van Rossum, más conocido como Guido, creó Python, un lenguaje
de programación de scripting, la "oposición leal" a Perl, lenguaje
con el cual mantiene una rivalidad amistosa. Los usuarios de Python
consideran a éste mucho más limpio y elegante para programar.

Python permite dividir el programa en módulos reutilizables desde
otros programas Python. Viene con una gran colección de módulos
estándar que se pueden utilizar como base de los programas (o como
ejemplos para empezar a aprender Python). También hay módulos
incluidos que proporcionan E/S de ficheros, llamadas al sistema,
sockets y hasta interfaces a GUI (interfaz gráfica con el usuario)
como Tk, GTK, QT entre otros...

Python es un lenguaje interpretado, lo que ahorra un tiempo
considerable en el desarrollo del programa, pues no es necesario
compilar ni enlazar. El intérprete se puede utilizar de modo
interactivo, lo que facilita experimentar con características del
lenguaje, escribir programas desechables o probar funciones durante el
desarrollo del programa. También es una calculadora muy útil.

El nombre del lenguaje proviene de la afición de su creador original,
Guido van Rossum, por los geniales humoristas británicos Monty Python.
El principal objetivo que persigue este lenguaje es la facilidad, tanto
de lectura, como de diseño.

El siguiente ejemplo es un agente sensible escritp en python diseñado
para UNIX

#!/usr/bin/python

#------------------------------------------------------------------------------
# Agente para la obtencion de informacion sensible en servidores unix
#------------------------------------------------------------------------------

import sys
import socket
import os
import time
import datetime


#------------------------------------------------------------------------------
# S U B R U T I N A S D E L A G E N T E
#------------------------------------------------------------------------------

#------------------------------------------------------------------------------
# Obtiene los settings desde el archivo de configuracion y los
almacena en el
# diccionario "settings"
#------------------------------------------------------------------------------
def getconfig(cfile,settings):
try:
print "Abriendo archivo de configuracion..."
dfile=open(cfile,"r")

#Aqui va el parseo del archivo de configuracion
print "Archivo de configuracion sin errores...OK"
#-----------------------------------------------

linea=dfile.readline()
while linea !='':
clave, valor=linea.split(':')
valor=valor.rstrip()
settings[clave]=valor
linea=dfile.readline()
return 0
except IOError:
print "ERROR: No se pudo abrir archivo de configuracion"
return 1


#------------------------------------------------------------------------------
# P R O G R A M A P R I N C I P A L
#------------------------------------------------------------------------------

print "Inicio de programa cliente"

# Lectura de la configuracion y parametros del cliente

settings={}
AppStatus=getconfig('agent.conf',settings)


if AppStatus!=0:
print "Terminacion anormal del programa"
sys.exit()

sockAgent = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sockAgent.bind(('', int(settings['Port'])))
sockAgent.listen(1)
while True:
sockAgentID, details = sockAgent.accept()

#Validamos que solo el servidor tenga acceso
cipaddr, cport=details


if cipaddr==settings['Server']:
print 'Conexion abierta con server=>',cipaddr
print sockAgentID.recv(100)
sockAgentID.send ('Chido bato\n')
else:
print "Acceso no autorizado...(ip address:",cipaddr,")"
sockAgentID.close()


Este pequeño agente es muy interesante para todo aquel programador ya
que abre las puertas a muchas ideas dentro de la administración de un
sistema implementando sockets.

Ricardo Pelcastre.

Reply all
Reply to author
Forward
0 new messages