[Python] Pub-Speedtest

Dieses Thema im Forum "Projekte / Codes" wurde erstellt von weixi2, 5. Juni 2006 .

Schlagworte:
  1. 5. Juni 2006
    Pub-Speedtest

    Hallo,

    Kolazomai war so nett und hat mir Python erklärt und hier ist nun mein erstes Script:

    Man kann es z.B. auf nem Root ausführen und so den Speed von einem Pub rausfinden. Die Verwendung ist ziemlich einfach:

    Die IP muss man natürlich ersetzen, die letzte Zahl gibt die Größe des SpeedTest-Files in MB an.

    Hier der Code: (Einfach in eine Datei names SpeedTest.py kopieren)
    Code:
    ###########
    # IMPORTS #
    ###########
    
    import random
    import sys
    from ftplib import FTP
    import time
    import os
    
    #----------------------------------------------------------------------------#
    
    def gettext(ftp, filename, outfile=None):
     # fetch a text file
     if outfile is None:
     outfile = sys.stdout
     # use a lambda to add newlines to the lines read from the server
     ftp.retrlines("RETR " + filename, lambda s, w=outfile.write: w(s+"\n"))
    
    #----------------------------------------------------------------------------#
    
    def WriteDummyFile(size_in_mb):
     """ Generiert ein Test-datei zum Up/Download """
     kb_buffer = "w"
     s = "abcdefghijklmnopqrstuvwxyz1234567890"
    
     for i in range(1024):
     kb_buffer += "w"
    
     filename = "".join([ random.choice(s) for i in range(8) ]) + ".txt"
    
     x = open(filename, "w")
     for i in range(int(size_in_mb)*1024):
     x.write(kb_buffer)
    
     x.close()
     return filename
    
    #----------------------------------------------------------------------------#
    
    def MainFunc():
    
     UploadTime = 0.0
     DownloadTime = 0.0
    
     if len(sys.argv) <> 3:
     print ""
     print " +---------- A SpeedTest for Pubs in Python ---------+"
     print " | |"
     print " | Usage: python SpeedTest.py <Pub-IP> <FileSize MB> |"
     print " | |"
     print " +------------------- ® by weixi2--------------------+"
     print ""
     else:
     print ""
    
     # Verbinden #
     print "[+] Connecting to " + sys.argv[1] + ".."
     try:
     ftp = FTP(sys.argv[1])
     print "[+] Connection established"
     except:
     print "[-] Error while connecting"
     ftp.quit()
     sys.exit(0)
    
     # Einloggen #
     print "[+] Logging in.."
     try:
     ftp.login("anonymous", "anon@the.net")
     print "[+] Successfully logged in"
     except:
     print "[-] Not logged in"
     ftp.quit()
     sys.exit(0)
    
    
     # Datei Senden #
     print "[+] Sending File.."
     filename = WriteDummyFile(sys.argv[2])
     try:
     f = open(filename, "r")
     begin_transfer = time.time()
     ftp.storlines("STOR " + filename, f)
     end_transfer = time.time()
     f.close()
     print "[+] File successfully sent"
     UploadTime = end_transfer - begin_transfer
     print "[+] File sending took " + str(UploadTime)[:4] + " Seconds"
     except:
     print "[-] Error while sending"
     ftp.quit()
     f.close()
     sys.exit(0)
    
     # Datei empfangen #
     print "[+] Receiving File.."
     os.remove(filename)
     try:
     f = open(filename, "w")
     begin_transfer = time.time()
     gettext(ftp, filename, f)
     end_transfer = time.time()
     print "[+] File successfully received"
     DownloadTime = end_transfer - begin_transfer
     print "[+] File receive took " + str(DownloadTime)[:4] + " Seconds"
    
     except:
     print "[-] Error while receiving"
     ftp.quit()
     f.close()
     sys.exit(0)
    
     # Geschwindigkeit berechnen #
     UL_Speed = (int(sys.argv[2]) * 1024) / UploadTime
     DL_Speed = (int(sys.argv[2]) * 1024) / DownloadTime
    
     print ""
     print "Upload Speed: " + str(UL_Speed)[:4] + " kB/s"
     print "Download speed: " + str(DL_Speed)[:4] + " kB/s"
     print ""
    
     f.close()
     os.remove(filename)
     ftp.delete(filename)
     ftp.quit
    
    #----------------------------------------------------------------------------#
    
    if __name__ == "__main__":
     MainFunc()
    
    Das ganze liefert folgende Ausgabe:
    Code:
    [+] Connecting to 123.123.123.123..
    [+] Connection established
    [+] Logging in..
    [+] Successfully logged in
    [+] Sending File..
    [+] File successfully sent
    [+] File sending took 44.8 Seconds
    [+] Receiving File..
    [+] File successfully received
    [+] File receive took 14.0 Seconds
    
    Upload Speed: 22.8 kB/s
    Download speed: 72.6 kB/s
    
    Nochmals danke an Kolazomai für die Hilfe


    Kritik ist erwünscht, aber bedenkt, dass das mein erstes Script ist

    Gruß weixi2

    edit: Die exe alleine reicht nich, man braucht auch noch paar andere Dateien ^^ aber bin grad zu faul, die hochzuladen

    edit2: Das ganze wurde überarbeitet. Jetzt wird auch die Testfile lokal nach dem Download gelöscht. Außerdem sind die anderen Dateien jetz hochgeladen ^^
    Link: http://rapidshare.de/files/22266990/SpeedTest.rar.html
     
  2. 2. Juli 2006
    danke für das tool.

    Weis aber gerade nicht was bzw. wie man es anwenden soll.

    Habe eine Speedytest.py erstellt.

    Doppelklick (schließt sofort wieder)

    mhh und wie geht?

    oder es kommt

    >>> python SpeedTest.py 20.1x0.x1.12 1
    SyntaxError: invalid syntax
     
  3. 3. Juli 2006
    Nice.
    Sowas kann man immer gebrauchen.
    Besonders bequem da es nur ein Skript ist.
     
  4. 4. Juli 2006
    hi,
    ist echt nützlich, habe aber nicht so viel Ahnung von Python, deswegen wollte ich mal fragen ob man das tool auch Remote starten kann, also zb. auf nem Highspeed Stro starten damit er den Speed von nem anderem Pub mit bisher umbekannter Geschwindigkeit rausbekommt?? ?(
     
  5. 4. Juli 2006
    Ich kenn mich mit Stros nicht so aus aber wennn du shellzugang hast und python installiert ist sollte das kein problem sein.
     
  6. 4. Juli 2006
    Genau dafür ist das script eigentlich gedacht.
     
  7. 4. Juli 2006
    ja aber wie geht das?? einfach Python auf den remote installieren, dann über Shell ausführen?
     
  8. 4. Juli 2006
    ja einfach per "python SpeedTest.py <IP> <GRÖßE>" starten
     
  9. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.