Hier ist ein Python Programm, welches alle 20 Sekunden ein Speedtest an 5 Domains macht (im Quellcode nach belieben ändern) und alle 2 Minuten ein Speedtest macht.
Alle Ergebnisse werden in einer Datei ausgegeben und zusätzlich im Terminal angezeigt.
Benötigte Module
pip install speedtest-cli
Wenn beim Speedtest ein Error 403:Forbidden Fehler kommt
s = speedtest.Speedtest(secure=True)
Secure auf True setzen
Quellcode
import subprocess
import time
import speedtest
def ping_test(target_host):
# Führe den Ping-Befehl aus (Anpassung für dein Betriebssystem erforderlich)
try:
subprocess.check_output(['ping', '-c', '4', target_host], stderr=subprocess.STDOUT, text=True, timeout=10)
return None # Erfolgreicher Ping
except subprocess.CalledProcessError as e:
return f"Error: {e.output}"
except subprocess.TimeoutExpired:
return "Error: Ping timed out"
def run_speedtest():
st = speedtest.Speedtest()
download_speed = st.download() / 1024 / 1024 # Convert to Mbps
upload_speed = st.upload() / 1024 / 1024 # Convert to Mbps
result = f"Download Speed: {download_speed:.2f} Mbps, Upload Speed: {upload_speed:.2f} Mbps"
print(result)
return result
def main():
target_domains = ['google.com', 'example.com', 'github.com', 'stackoverflow.com', 'reddit.com']
all_domains_file = 'all_domains.txt'
sorted_domains_file = 'sorted_domains.txt'
speedtest_file = 'speedtest_results.txt'
tests_count = 0
failed_count = 0
failed_count_per_hour = 0
start_time = time.time()
print("Das Programm läuft...")
while True:
for target_domain in target_domains:
# Führe den Ping-Test für jede Domain durch
result = ping_test(target_domain)
# Inkrementiere die Anzahl der durchgeführten Tests
tests_count += 1
if result is not None:
# Erhöhe die Anzahl der fehlgeschlagenen Pings
failed_count += 1
failed_count_per_hour += 1
# Aktuelles Datum und Uhrzeit hinzufügen
timestamp = time.strftime('%Y-%m-%d %H:%M:%S')
result_with_timestamp = f"{timestamp} - {target_domain} - {result}\n"
# Ergebnisse in die gemeinsame Datei schreiben
with open(all_domains_file, 'a') as file:
file.write(result_with_timestamp)
print(f"Fehlgeschlagener Ping für {target_domain} um {timestamp}. Ergebnis:\n{result}")
# Wenn alle 100 Tests erreicht sind, speichere das Ergebnis auch in der Log-Datei
if tests_count % 100 == 0:
with open(f'all_pings_{time.strftime("%Y-%m-%d_%H-%M-%S")}.log', 'a') as log_file:
log_file.write(f"Test #{tests_count} - {time.strftime('%Y-%m-%d %H:%M:%S')}\n{result}\n\n")
# Sortiere die Domains und speichere sie in einer separaten Datei
sorted_domains = sorted(target_domains)
with open(sorted_domains_file, 'w') as sorted_file:
sorted_file.write('\n'.join(sorted_domains))
# Alle 2 Minuten Speedtest durchführen
if tests_count % 6 == 0:
speedtest_result = run_speedtest()
with open(speedtest_file, 'a') as speedtest_log:
speedtest_log.write(f"{time.strftime('%Y-%m-%d %H:%M:%S')} - {speedtest_result}\n")
# Berechne den Prozentsatz der fehlgeschlagenen Pings
success_rate = ((tests_count - failed_count) / tests_count) * 100 if tests_count > 0 else 100
print(f"Gesamtanzahl der Tests: {tests_count}, Erfolgsrate: {success_rate:.2f}%")
# Berechne die vergangene Zeit in Stunden
elapsed_hours = (time.time() - start_time) / 3600
# Aktualisiere die Gesamtanzahl der fehlgeschlagenen Pings pro Stunde
failed_count_per_hour = 0
# Warte 20 Sekunden, bevor der nächste Durchlauf beginnt
time.sleep(20)
if __name__ == "__main__":
main()
-
Quellcode kopieren und Terminal öffnen, und Nano öffnen
sudo nano test.py
2.Quellcode einfügen und ggf. Domains die angepingt werden sollen ändern
3. Nano mit strg+x schließen und mit „Y“ Datei in test.py speichern.
4. test.py Datei ausführbar machen
Sudo chmod +x test.py
5. Programm starten
python3 test.py