#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 + Multi-Zitat Zitieren
#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 + Multi-Zitat Zitieren
#3 3. Juli 2006 Nice. Sowas kann man immer gebrauchen. Besonders bequem da es nur ein Skript ist. + Multi-Zitat Zitieren
#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?? ?( + Multi-Zitat Zitieren
#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. + Multi-Zitat Zitieren
#7 4. Juli 2006 ja aber wie geht das?? einfach Python auf den remote installieren, dann über Shell ausführen? + Multi-Zitat Zitieren