• Viernes 3 de Mayo de 2024, 02:32

Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Mensajes - ryuz

Páginas: 1 [2]
26
PHP / Re:Cerrar una ventana al abrir otra desde un link de un iframe en php
« en: Viernes 10 de Mayo de 2013, 15:51 »
Creo que manejar el navegador en sí mediante PHP no es posible, deberias intentar combinarlo con JavaScript, que para ello esta...  :nosweat:

27
PHP / Re:Aplicación de registro de incidencias
« en: Viernes 10 de Mayo de 2013, 15:49 »
Bueno intentare ayudarte aunque no sea un experto en la materia.  :nosweat:

Hace tiempo programe un registro de incidencias de cuando se logeaban erroneamente, por lo que tengo entendido no es exactamente lo que buscas pero intentare contestar..

  • Para registrar el nombre de usuario como se encuentra en una variable, hipoteticamente "$username", lo único que debes hacer es una vez logeado o en el intento del logeo, insertar un registro en una tabla de la base de datos que podría ser "$sql = "INSERT INTO incidencias (campo_usuario,campo_date) VALUES ($username,$date)";"
  • Para tu segunda pregunta, podrías tener una un campo en la tabla de incidencias_contadas, y antes de añadir el caso registrado, hacer una consultar y obtener el ultimo registro y sumarle al campo numero+1.

Espero haberme explicado...podria quedar algo asi:

Código: [Seleccionar]
<?php
//funciones de logeo
if($logeo == "correcto") {
    echo 
"Logeo correcto.";
} else {
    
$last_id mysql_insert_id();
    
$query0 mysql_query("SELECT numero_caso FROM incidencias_contadas WHERE id=".$last_id);
$result0 mysql_fetch_row($query0);
$ncaso $result0[0]+1;
    
$sql "INSERT INTO incidencias_contadas (id,nombre_usuario,numero_caso) VALUES (NULL,$username,$ncaso)";
    
$query1 mysql_query($sql);
    echo 
"Logeo invalido";
?>


PD: Si hay algun error de programación no me lo tomes mucho en cuenta, ya que paso tiempo desde que programe con seriedad PHP.

 :whistling:

28
Python / [SCRIPT] Alerta en caso de sobrecarga del sistema *nix.
« en: Viernes 10 de Mayo de 2013, 11:41 »
Hola  :nosweat:

Aun no tengo un nombre real para este código ya que este fin de semana lo reharé pero con clases para que este mejor formado...

El programa se basa en la lectura de unos datos recibidos por dos comandos de sistema, y en el caso de que esos valores sean inferiores o superiores dependiendo de CPU o memoria, pues se alertara al usuario con un mensaje en el correo electrónico o un sms/creacion de evento en el calendario.

He utilizado la API que Google ofrece para implementar el calendario/funciones de este, en nuestros programas.

Código: [Seleccionar]
#!/usr/bin/python
#importamos librerias requeridas
import atom
import gdata.calendar
import gdata.calendar.service
import random
import time
import smtplib
import math
import commands
import logging
from email.mime.text import MIMEText
#variables globales
LOGFILE = "checkServer.log"
cpu_mail_level = 3
cpu_sms_level = 5
mem_mail_level = 2.5
mem_sms_level = 0.5
email = "******@gmail.com"
email_password = "*******"
#funciones
def check_cpu():
fObj = open("/proc/loadavg","r")
        fData = fObj.readline()
        fObj.close()
        cpu_status = math.ceil(float(fData.split()[0]))
return cpu_status
def check_mem():
status,mTotal = commands.getstatusoutput("free -m | grep Mem | cut -f11 -d' '")
status,mFree = commands.getstatusoutput("free -m | grep Mem | cut -f26 -d' '")
mFree = math.ceil((float(mFree)*100)/float(mTotal))
return mFree
def is_saturated():
logging.basicConfig(filename=LOGFILE,level=logging.DEBUG,format="%(asctime)s - %(name)s::%(levelname)s %(message)s")
cpu_level = check_cpu()
mem_level = check_mem()
print "Nivel de CPU: %s -- Nivel de Mem: %s" % (cpu_level,mem_level)
print "Nivel mail CPU: %s -- Nivel sms CPU: %s" % (cpu_mail_level,cpu_sms_level)
print "Nivel mail Mem: %s -- Nivel sms Mem: %s" % (mem_mail_level,mem_sms_level)
if( (cpu_level >= cpu_mail_level) and (cpu_level < cpu_sms_level) ): sendmail(cpu_level,"CPU")
elif(cpu_level >= cpu_sms_level):
sendsms(cpu_level,"CPU")
sendmail(cpu_level,"CPU")
else:
print "CPU funcionando correctamente."
logging.debug("CPU: OK")
if( (mem_level <= mem_mail_level) and (mem_level > mem_sms_level) ): sendmail(mem_level,"Memoria")
elif(mem_level <= mem_sms_level):
sendsms(mem_level,"Memoria")
sendmail(mem_level,"Memoria")
else:
print "Memoria funcionando correctamente."
logging.debug("Memory: OK")
def sendmail(nstatus,by):
sFrom = email
sTo = email
headers = ["From: "+sFrom,"Subject: Alerta PROLIANTG6 saturado.","To: "+sTo,"MIME-Version: 1.0","Content-Type: text/html"]
headers = "\r\n".join(headers)
msg = "El servidor PROLIANTG6 se encuentra al nivel %s de saturacion de %s." % (nstatus,by)
sObj = smtplib.SMTP("smtp.gmail.com",587)
sObj.ehlo()
sObj.starttls()
sObj.ehlo()
sObj.login(sFrom,email_password)
try: sObj.sendmail(sFrom,sTo,headers+"\r\n\r\n"+msg)
except: print "No se pudo enviar el correo."
else:
print "Se envio el correo correctamente."
logging.debug(by+" Email sent.")
sObj.close()
def sendsms(nstatus,by):
cs = gdata.calendar.service.CalendarService()
cs.email = email
cs.password = email_password
cs.source = "GoogleSMSCalender_" + str(random.randint(0, 10000))
cs.ProgrammaticLogin()
event = gdata.calendar.CalendarEventEntry()
event.title = atom.Title(text="Alerta PROLIANTG6 saturado.")
texto = "El servidor PROLIANTG6 se encuentra al nivel %s de saturacion de %s." % (nstatus,by)
event.content = atom.Content(text=texto)
event.where.append(gdata.calendar.Where(value_string="Repuestos Gualsan"))
start_time = time.strftime("%Y-%m-%dT%H:%M:%S.000Z", time.gmtime(time.time() + 2 * 60))
when = gdata.calendar.When(start_time=start_time, end_time=start_time)
reminder = gdata.calendar.Reminder(minutes=1, extension_attributes={"method":"sms"})
when.reminder.append(reminder)
event.when.append(when)
try: new_event = cs.InsertEvent(event, "/calendar/feeds/default/private/full")
except: print "No se pudo enviar el sms."
else:
print "SMS enviado correctamente."
logging.debug(by+" SMS sent.")
if __name__ == "__main__":
is_saturated()

Para quien no lo sepa, Google activo hace tiempo una función de SMS por alerta de eventos, por lo que en la configuración de Google Calendar deben tener el número asociado.

Tambien puede servir tener alguna aplicacion de Google Calendar en el telefono por lo que recibirian la alerta de un modo u otro.

Para la proxima versión tengo pensado:
  • POO
  • Procesamiento de procesos huerfanos
  • ¿?
Hay algunas lineas de más que imprimen texto por ejemplo que era más que nada de referencia.

29
Python / Re:Proceso que se ejecute de forma continua ???
« en: Viernes 10 de Mayo de 2013, 11:21 »
Buenas :nosweat:, voy a proponer mi código y lo explico brevemente ya que no tiene gran complejidad.
Lo he creado en una instancia donde sea necesario leer continuamente un fichero de huellas (*.log).

Código: [Seleccionar]
#!/usr/bin/python
from sys import exit #Importamos la función de salida de sys.
import subprocess #Importamos la libreria de subprocess
filename = "/var/log/checkServer.log" #Asignamos la ruta y fichero que leeremos.
command = "tail -f %s" % (filename) #Asignamos el comando y el fichero anteriormente asignado.
ps = subprocess.Popen(command,shell=True) #Creamos el subproceso.
if(ps): #Comprobamos que existe.
        try: ps.wait() #Intentamos que se quede esperando hasta que interrumpa el programa o termine el mismo.
        except: exit(1)
        else: exit(0)

Los valores 1 y 0 de la función exit, se refiere a si se termino sin errores el programa (la lectura).

30
La taberna del BIT / Re:Bienvenido al foro: Presentate
« en: Viernes 10 de Mayo de 2013, 08:15 »
Buenas, un placer ingresar en la comunidad e intentaré aportar mis conocimientos como aprender de ustedes.

Nick: ryuz/RyuZ
País: España
En que me gusta programar: Python,NASM,PHP,Bash Scripting.

Páginas: 1 [2]