lundi 29 juin 2015

WebBenchmark

Bonjour à tous (et à toutes ?),

Je poste un petit script que j'ai fait et qui permet de faire des Benchmarks de serveurs Web en HTTP.

N'hésitez surtout pas à me faire des remarques dessus, je suis loin d'être expertisé en python !
Par contre, je serai très heureux de l'améliorer.

Voici le script :
Dans un pastebin : http://ift.tt/1RM6daR

Sur le forum :
Code:

#!/usr/bin/python
from threading import Thread
import urllib2
from Queue import *
import time
import sys

class HttpRequest(Thread):
        def __init__(self,queue,name,url):
                print ("Creation de la requete {}".format(name))
                self.queue=queue
                self.creation=time.time()
                Thread.__init__(self,name=name)
        def run(self):
                content = urllib2.urlopen(url).read()
                print("Requete {} terminee : {} secondes écoulées".format(self.getName(),(time.time()-self.creation)))
                self.queue.task_done()

def usage():
        print("Usage : {} URL nbReqParSeconde nbSec".format(sys.argv[0]))
        sys.exit()

def atoi(chaine):
        retour=0
        try:
                retour=int(chaine)
        except:
                usage()
        return retour

if __name__ == '__main__':
        if(len(sys.argv)==4):
                nbReqParSeconde=atoi(sys.argv[2])
                nbSec=atoi(sys.argv[3])
                url=sys.argv[1]
                queues = list()
                cpt=0

                try:
                        while(True):
                                q=Queue(nbReqParSeconde)
                                for i in range(0,nbReqParSeconde):
                                        http=HttpRequest(q,"%d"%cpt,url)
                                        http.start()
                                        q.put(http)
                                        cpt+=1
                                queues.append(q)
                                time.sleep(nbSec)
                except KeyboardInterrupt:
                        print("Fermeture des queues")
                        cpt=1
                        for qu in queues:
                                print("Fermeture de la queue %d"%cpt)
                                q.join()
                                cpt+=1
        else:
                usage()

L'utilisation se fait via la ligne de commande et de la manière suivante :
WebBenchmark.py http://monsite.com 80 10

Dans cet exemple, on envoie au site http://monsite.com 80 requêtes toutes les 10 secondes.
On pourra ainsi voir le temps nécessaire pour chaque requête. Il peut également être intéressant de combiner ça avec un petit htop sur la machine ciblée.

Pour stopper l'utilisation un simple CTRL+C suffit.

Petit Disclaimer:
L'utilisation de ce script peut s'apparenter à du Déni de Service, utilisez le donc uniquement sur vos machines ou avec une autorisation préalable


from Hackademics : Forum de hacking – hackers white hat – cours de securite informatique, apprendre langage python, tutoriels de reverse engineering http://ift.tt/1C217pp
via IFTTT

Aucun commentaire:

Enregistrer un commentaire