Simple XML-RPC Server with gEvent
2010-12-26 22:12:20 UTC by maris in python, Linux, Skripti,
#!/usr/bin/python
from gevent import monkey
monkey.patch_all()
import gevent
import time
import xmlrpclib
from SimpleXMLRPCServer import SimpleXMLRPCServer
import SocketServer
from SimpleXMLRPCServer import SimpleXMLRPCServer,SimpleXMLRPCRequestHandler
class ThreadedXMLRPCServer(SocketServer.ThreadingMixIn,SimpleXMLRPCServer): pass
import urllib2
class XMLRPCHandler:
def is_even(n):
return n%2 == 0
def req(url):
return urllib2.urlopen(url).read()
server = ThreadedXMLRPCServer(("localhost", 7080))
print "Listening on port 7080..."
server.register_instance(XMLRPCHandler())
server.serve_forever()
Atjaunināts files.inbox.lv downloader
2009-12-09 09:05:09 UTC by maris in python, Internets, Skripti,Atjaunināju files.inbox.lv downloder, tagad ari uploader skriptu.
Galvenais jauninājums ir upload iespējam, kā arī iespēja uplodēt direktorijas saturu un pat rekursīvi uploadēt direktorijas un apakšdirektoriju saturus. Direktoriju struktūras koks nesagabājas.
Paņemt te
Asinhrons serveris 5 minūtēs ar Twisted
2009-12-08 21:25:12 UTC by maris in python, Twisted,Vienkārša asinhrona server piemērs ar defered pielietojumu. Dotais piemērs nodarbojas ar to ka saņem stringu un atgriež stringa hash summu, pēc EOF pātrauc savienojumu. Lai neaizmirstu :)
#!/usr/bin/env python
from twisted.protocols.basic import LineReceiver
from twisted.internet import reactor, protocol, defer
import re
class SimpleServer(LineReceiver):
defer.setDebugging(True)
# Twisted Method, is called when connection has been made
def connectionMade(self):
self.sendLine("Hi %s"%(self.transport.getPeer()[1]))
# Twisted Method, is called when connection has been lost
def connectionLost(self, data):
print "Calling Connection lost"
# Twisted Method, is called when line is received
def lineReceived(self, line):
# If line is EOF, disconnecting
if re.search('^EOF$',line):
# Twisted method to disconnect
self.transport.loseConnection()
else:
# Creating defered object
defered = self.DeferedFunction('%s'%(line))
# Adding Callbec to be run, when result is ready
defered.addCallback(self.ReturningFunction)
# Function which is doing defered stuff
def DeferedFunction(self, data):
# initng defered
d = defer.Deferred()
import hashlib
digest = hashlib.sha224(data).hexdigest()
# Sending data to callback
d.callback('String hash: %s'%(digest))
# returning deferd object
return d
# Callback function
def ReturningFunction(self, data):
# Returning result to client
self.sendLine("%s"%(data))
def main():
factory = protocol.ServerFactory()
factory.protocol = SimpleServer
reactor.listenTCP(1100,factory)
reactor.run()
if __name__ == '__main__':
main()
files.inbox.lv downloader
2009-06-05 15:09:46 UTC by maris in Linux, python, Skripti, Apple, Software,files.inbox.lv ir visai jauns failu glabāšanas serviss, kam ir diezgan ērta upload forma, kas ļauj augšup ielādēt vairākus failus vienlaicīgi, bet diemžēl nav iespējas lejupielādēt vairākus failus vienlaicīgi, tādēļ uzrakstīju nelielu Python skriptu, kas šo trūkumu atrisina.
Inbox Files Downloader ir komandrindas (cli) Python skripts, kas lejupielādē failus no files.inbox.lv servisa, saglabājot tos uz lokālā diska. Skripts ir spējīgs lejupielādēt individuālus failus, vaī pat veselu direktoriju saturu.
Spēj lejupielādēt:
1. Privātos failus un direktorijas saturus, ar autorizāciju
2. Publiskos failus - bez autorizācijas
Lai lejupielādēt privāto failu vai direktorijas saturu:
./inbox-files-downloader.py -s 'http://files.inbox.lv/files/download/?id=9999' -d Downloads/
pēc kā tiks paprasīti autorizācijas dati.
vai publisko:
./inbox-files-downloader.py -s 'http://files.inbox.lv/ticket/2dcb12a3282ce55ac122c118ac4c567acae474c5/817-2271.pdf' -d Downl/
autorizācijas dati netiks prasīti.
Komentāri un ieteikumi ir laipni gaidīti :)
Nepieciešama UNIX tipa OS un python > 2.4, pie lielas vēlēšanās var modificēt arī priekš Win.
paņemt var te:
py skripts: inbox-files-downloader
Win32 exe: inbox-files-downloader-r20
Netconsole2Mail
2008-12-05 10:28:18 UTC by maris in Linux, python, Skripti,dmesg ir visai noderīga lieta kodola ziņu pārlūkošanai. Kodols signalizē, ja ir kādas problēmas ar aparatūru vai programmaturu (piem. failu sistēmu), tas viss tiek atspoguļots iekš dmesg. Un cik bieži sanāk apskatities dmesg? Droši vien tikai tad, kad tiek atjaunināta sistēma, vai arī rodas kādas problēmas. Linux Kernelī ir lieta, kas saucas "netconsole". Netconsole dod iespēju sūtīt kerneļa ziņas uz kādu citu centrālu serveri, tas var būt syslog serveri, vai arī vienkāršs netcat, bet gan netcat gan syslog ir trūkumi netconsole ziņu saņemšanā un kādu darbību izpildē. Tādēļ nolēmu uzrakstīt nelielu dēmonu, kas tad veiktu netconsole server funkcijas. Tā darbība ir visai vienkārša tas saņem ziņas uz 6666/udp, liek buferī, un pēc kāda konfigurēta intervāla buffera saturu sūta administratoram. Paņemt var te: http://forums.gentoo.lv/index.php?topic=36.0
(0 komentāri)