Una macbook que baja mails desde un servidor propio (con un Kerio en la empresa)
Un router que no soporta loopback
Entonces, cuando la mac esta fuera de la empresa, se podia hacer referencia, en el cliente de mail, al DNS, que llamaremos empresa.dyndns.ws (para no revelar datos reales)
Pero, dentro de la empresa, el DNS empresa.dyndns.ws, simplemente no funciona.
Habia que resolverlo, y rapido[0].
Python al rescate!
He aquí el script (es feo, muy feo, pero salio rapidisimo y con fritas!)
import os from subprocess import Popen, PIPE, STDOUT esta = False p = Popen(['ping','-c','1','server'], stdout = PIPE) output = p.stdout.read() p.wait() if 'bytes from' in output: ok = True else: ok = False f = open('/etc/hosts', 'r') f2 = open('/etc/hosts2', 'w') for i in f: if 'empresa.dyndns' in i: esta = True if ok: f2.write(i) else: f2.write(i) if not esta and ok: f2.write('192.168.0.1 empresa.dyndns.ws \n') f.close() f2.close() os.remove('/etc/hosts') os.rename('/etc/hosts2','/etc/hosts')
Basicamente, hace un ping al nombre del servidor donde esta el servidor de mail (el Kerio) con el nombre local, 'server'. Si esta, estoy en le empresa, sino, no.
Entonces, basado en eso, toco el archivo hots (gracias Apple por hacer su OS un UNIX) y listo[1]. Se agrego al inicio y se corre con permisos de root y logramos lo que esta persona queria, una solucion rapida y magica.
No estoy orgulloso del script en si, sino, del poder de python para hacer estos quick hacks, que te salvan la papas. =)
[0] Dicen que rapido y bien, es imposible.
[1] Pero, como decia TuSam, puede fallar. Por ejemplo, si justo hay otro 'server', donde esta esta persona (shit happens)