Boas a todos/as:
Estou buscando programadores en C++ (valorable QT) para un proxecto de
software de xestion de seguridade e aparcamentos.
ofrecese moita flexivilidade, incluso teletraballo
soldo escalable.
Sobre todo, interesa xente con ganas de aprender e con iniciativa propia.
Somo unha empresa moi pequena e con ganas de crecer.
Gracinhas polo tempo prestado :)
Saludos,
Francisco Fernández
Buenas, acudo a vosotros para ver si me podriais resolver un problema que
tengo con una pequeña utilidad que estoy haciendo en Python
Resulta que en mi residencia para poder tener internet hay que loguearse en
una web a la que eres redirigido al abrir el navegador y luego tienes que
mantener esa pagina siempre abierta, si la cierras tienes internet durante 5
minutos y luego se va.
Asi que me puse con este script y el problema es precisamente esos 5
minutos. Lo solucionaba haciendo un bucle con while y sleep, pero ahora
quiero ir un poco mas alla y estoy usando librerias GTK para hacerlo algo
mas profesional (por llamarlo de alguna manera xD).
Ahora tengo un programa que esta en la bandeja del sistema y dando boton
derecho tienes la opcion de Ejecutar (mas adelante lo pondre mejor).
El problema es que al darle a Ejecutar, el programa entra en una funcion y
se queda en el sleep, impidiendo que puedas hacer nada mas con el. El tema
es que creo que podria eliminar ese sleep si utilizase cookies (creo), pero
no estoy nada puesto en el tema y esta es la unica forma que se me ocurre
para que no se desconecte a los 5 minutos.
Estuve leyendo sobre la creacion de hilos en Python pero no consigo
implementarlo.
En fin, aqui os pongo el codigo que tengo a ver si se os ocurre algo.
Gracias
#!/usr/bin/env python
import pygtk
import gtk
import urllib2
import time
import threading
from twill.commands import go, fv, submit
class icono:
def __init__(self):
builder = gtk.Builder()
builder.add_from_file("/home/faidoc/resa/resanator-gui/resanator-gui.glade")
self.iconobandeja = builder.get_object("iconobandeja")
self.menu = builder.get_object("menu")
self.acerca = builder.get_object("acerca")
builder.connect_signals(self)
def on_iconobandeja_activate(self, widget, data=None):
self.acerca.show()
def on_acerca_close(self, widget, other=None):
gtk.main_quit() #Esto no funciona, revisar.
def on_iconobandeja_popup_menu(self, widget, button, activate_time):
self.menu.popup(None, None, None, button, activate_time)
def on_ejecutar_activate(self, widget, data=None):
t = ejecutar()
t.start()
t.join()
def on_salir_activate(self, widget, data=None):
gtk.main_quit()
class ejecutar(threading.Thread):
#def __init__(self):
# threading.Thread.__init__(self)
def run(self):
while 1:
go('AQUI_VA_LA_URL_PARA_LOGIN')
try:
fv("1", "username", "USUARIO")
fv("1", "password", "CONTRASEÑA")
submit('0')
except urllib2.HTTPError, e:
sys.exit("%d: %s" % (e.code, e.msg))
except IOError, e:
print e
except:
pass
time.sleep(240)
if __name__ == "__main__":
icono()
gtk.main()
--
Alexandre Filgueira
www.linuxeame.net
PGP: http://www.linuxeame.net/gpg/
Olas a todos,
Teño que cambiar de proveedor dos meus dominios, é non sei cal escoller.
O sitio máis barato o teño claro (1&1), pero me gustaría saber se
algúen ten un dominio ahí e se ten un panel decente.
Non me importa pagar un pouco máis a cambio de ter un panel que me
permita facer subdominios(isto supoño quer todos), redireccións,
axustar os MX e demais, dunha maneira que non sexa moi engorrosa.
Saludos!!
--
Adrián Boubeta elboube(a)gmail.com
Bueno, pues ya se ha solucionado el tema, gracias a todos por vuestra ayuda
y en especial al Sr Ciges y Sr Couto por su ayuda presencial, os pego el
código final (y funcional).
--------------------------------------
#!/usr/bin/perl
use Net::FTP;
#use Term::ReadKey;
use Getopt::Long;
$t0=@ARGV[0];
$t1=@ARGV[1];
# Posición de las opciones de la línea de comando.
GetOptions("force" => \$force);
# Anulamos el CTRL+C
$SIG{INT} = "IGNORE";
# Localizaciín de los ficheros de LOG.
$FichierErreur = "/home/pilote/psaftp/log/err.txt";
$FichierLog = "/home/pilote/psaftp/log/log.txt";
$FichierLock = "/home/pilote/psaftp/log/lock.dat";
# Localización de ficheros de envío.
$fic1=$t1;
$Fichier="/home/pilote/psaftp/envoi/$fic1";
$Idf=$t0."!";
$Libelle="Enviando archivo : $fic1 $Idf ";
($f1,$f2) = split(/\.zip\Z/, $fic1);
# Usuario y contraseña para la conexión FTP.
$userID="***********";
$userPass="************";
# Dirección del FTP
$Host="************************";
# $Port="4102"; dejamos el puerto estandar (21).
# ******************************************************
# * Procedimiento de gestión de errores *
# ******************************************************
sub success {
open(SUCCESS,"$FichierErreur") || die "imposible abrir $success";
while (<SUCCESS>) {
s/\n//;
if ( $_ =~ /.*(REQUEST:).*/) {
&request("$_");
}
}
close(SUCCESS);
}
sub request{
($a,$b) = $_[0] =~ /.*\s\d{3}\s(.*)\sCommand.*(REQUEST:\s.*\.).*/;
print LOGFILE scalar(localtime) . " : $a\t$b\n";
}
sub erreur {
$nberreur=0;
open(ERREUR,"$FichierErreur") || die "imposible abrir $erreur";
while (<ERREUR>) {
s/\n//;
if ( $_ =~ /.*(\(TRC=).*/) {
$nberreur = $nberreur + 1;
&trc("$_");
}
}
if($nberreur>0) {
print "¡error! mira el fichero de LOG para mas detalles.\n";
close(ERREUR);
return -1;
} else {
close(ERREUR);
return 0;
}
}
sub trc {
($c) = $_[0] =~ /.*(\s\d{3}.*)/;
print LOGFILE scalar(localtime) . " : " . ($c) ."\n";
}
sub GestionErreur {
&success;
$rep = &erreur;
return $rep;
}
# ***********************************
# * PROCEDIMIENTO DE FIN DE PROGRAMA*
# ***********************************
sub End_Prog {
print "\n\nPulsa enter para salir del programa";
$fin = <STDIN>;
chop($fin);
}
# ***************************************************************
# * PROCEDIMIENTO DE CONEXION Y AUTENTICACION DEL SERVIDOR *
# ***************************************************************
# * Los parámetros son : *
# * $_[0] : nombre del servidor remoto *
# * $_[1] : userID de la conexión *
# * $_[2] : contraseña asociada al *
# ***************************************************************
sub Authentification {
open(STDERR, '>', "$FichierErreur");
$ftp = Net::FTP->new($_[0], Port => 21, Debug => 3, Passive => 0);
if ($ftp == undef) {
print "Incapaz de conectarse al host remoto\n";
print "El mensaje de error es : $@\n";
print LOGFILE scalar(localtime) . " : Incapaz de establecer conexion
con la máquina remota\n";
print LOGFILE "El mensaje de error es :" . $@ . "\n";
return -1;
}
print "Estas conectado a la maquina remota\n";
print LOGFILE scalar(localtime) . " : Conexion estsablecida con la
maquina remota\n";
$rep = $ftp->login($_[1], $_[2]);
close(STDERR);
if ($rep == undef) {
GestionErreur;
print "Conexion rechazada : ¡ comprueba tu usuario y contrasen~a
!\n";
print LOGFILE scalar(localtime) . " : Conexion rechazada : ¡
comprueba tu usuario y contrasen~a !\n";
return -1;
}
print "UserID y contrasen~a aceptados por la maquina remota\n";
print LOGFILE scalar(localtime) . " : UserID y contrasen~a aceptados por
la maquina remota\n";
return 0;
}
# ************************************************************
# * PROCEDIMIENTO DE ENVIO DE FICHEROS *
# ************************************************************
# * Los parámetros son *
# * $_[0] : nombre del fichero a transferir. *
# * $_[1] : <IDF>! : IDF a utilizar para el envio *
# * $_[2] : redacción del log de transferencia *
# ************************************************************
sub Envoi {
open(STDERR, "> $FichierErreur");
if( -r $_[0] ) { #######* el -e
comprueba existencia, el -r existencia y apertura*
#el archivo existe y es legible
open(FILE, $_[0]) or die "Error al abrir el archivo $_[0].\n";
close FILE;
} else {
#el archivo no existe o no es legible
print "El archivo $_[0] no existe o no es legible !\ncrea uno antes
de lanzar esta aplicacion...\n";
return -1;
}
print "\nLanzando archivo : ".scalar(localtime)."\nEspera...\n";
print LOGFILE scalar(localtime) . " : Lanzando archivo : $_[2].\n";
if ($f1 ne $fic1) { $ftp->binary(); }
$ftp->put($_[0], $_[1]);
close(STDERR);
$nberr = &GestionErreur;
if ( $! eq '' && $nberr == 0) {
print "Archivo enviado a la maquina remota\n";
print "Archivo transferido correctamente a ".scalar(localtime)."\n";
print LOGFILE scalar(localtime) . " : " . $_[2] . ". Transferencia
correcta\n";
return 0;
} else {
# La gestión de errores se produce al llamar al método "GestionErreur"
print LOGFILE scalar(localtime) . " : $_[2] : Archivo no enviado a
la maquina remota\n";
return -1;
}
}
# **************************************************
# * Principal *
# **************************************************
# Comprobar si ya está funcionando
if ($force) {
unlink($FichierLock);
open(LOCK, "> $FichierLock");
close(LOCK);
} else {
# ver si ya está en marcha
open(LOCK, "$FichierLock");
if($! eq "") {
close(LOCK);
print "La aplicacion ya se esta ejecutando!\nadios!\n";
End_Prog;
exit 0;
} else {
close(LOCK);
open(LOCK, "> $FichierLock");
close(LOCK);
}
}
# ouvre le fichier de log
open(LOGFILE, "+>> $FichierLog");
print LOGFILE
"************************************************************************************************\n";
# phase d"authentification
$rep = Authentification($Host, $userID, $userPass);
# transfert
if ($rep == 0) {
&Envoi($Fichier,$Idf,$Libelle);
}
close(LOGFILE);
unlink($FichierErreur);
unlink($FichierLock);
$ftp->quit();
print "Adios...\n";
#End_Prog;
---------- Forwarded message ----------
From: Óscar Casal Sánchez <oscar.casal(a)gmail.com>
Date: 2011/1/15
Subject: [Guls] Oferta de traballo
To: Grupos e asociacións de usuarios de GNU/Linux de Galicia <
guls(a)mancomun.org>
Poño un enlace a unha oferta de traballo a quen poida interesar,
traballarase con sistemas GNU/Linux: http://www.dec.usc.es/node/2648
_______________________________________________
Guls mailing list
Guls(a)mancomun.org
http://listas.mancomun.org/mailman/listinfo/guls
Pido disculpas por mis últimas meteduras de pata como ha sido la de mandar
el código perl en el cuerpo del mensaje y ayer "responder" a una oferta
laboral a la lista en vez de a la persona que hizo la demanda, la
explicación es muy sencilla, falta de sueño causada por mi cese de trabajo y
mi próxima paternidad, esto último tiene a mi mujer "escarallada" y no
duerme ni ella ni yo.
Perdón por las molestias que haya podido ocasionar, seré mas cauto las
próximas veces.
Holas a todos,
Tengo un servdor de NFS que no acaba de funcionar. Este es el /etc/exports:
/var/lib/tftpboot/maquinas/client/ *(rw,sync,no_subtree_check)
Cuando intento montar algo desde un cliente, me dice:
isaac:/home/boube# mount.nfs
172.16.1.9:/var/lib/tftpboot/maquinas/client/ /mnt/test/
mount.nfs: rpc.statd is not running but is required for remote locking.
Either use '-o nolock' to keep locks local, or start statd.
Pasandole el '-o nolock' funciona, pero ese servidor lo necesito para
arrancar unas máquinas por red y ahí no puedo pasar parámetros, además
que debería de montar sin ningún problema sin el parámetro '-o
nolock'.
Saludiños a todos!
--
Adrián Boubeta elboube(a)gmail.com