Ich versuche, ein Bash-Skript nach Python zu portieren. Die Bash-Skript läuft ein tc
Befehl langsames Netzwerk zu simulieren, geht Hauptbitleitung wie folgt aus:Schlechte Antwort von Python os.system `RTNETLINK antwortet: Keine solche Datei oder Verzeichnis`
tc class add dev wlp1s0 parent 1:1 classid 1:12 htb rate 0.5mbps &&
tc qdisc add dev wlp1s0 parent 1:12 netem delay 300ms loss 2%
Das Skript „nur“ funktioniert wie sudo ausgeführt wird.
exakt die gleichen Zeilen in Python versagen, sind sie wie folgt aussehen:
>>> import os
>>> os.system("sudo tc class add dev wlp1s0 parent 1:1 classid 1:12 htb rate 0.5mbps")
RTNETLINK answers: No such file or directory
512
>>> os.system("sudo tc qdisc add dev wlp1s0 parent 1:12 netem delay 300ms loss 2%")
RTNETLINK answers: No such file or directory
512
In ähnlichen Fragen, die Menschen ein Kernel-Modul schlägt fehlt, finde ich diese Situation anders, da der tc
Befehl perfekt, wenn Lauf funktioniert von einem Terminal. Es scheint, als ob Python selbst etwas vermisst, um es richtig ausführen zu können. Alle Vorschläge oder Links sind sehr willkommen. Vielen Dank!
UPDATE:
Nach etwas mehr lesen und einen Zeiger aus den Kommentaren ich jetzt das Skript aktualisiert haben subprocess.call()
zu verwenden. Dies soll os.system
Anrufe ersetzen, aber verursacht keine Änderung an meinem Problem zur Hand.
>>> import subprocess
>>> subprocess.call("tc class add dev wlp1s0 parent 1:1 classid 1:12 htb rate 1.2mbit", shell=True)
RTNETLINK answers: No such file or directory
2
Bitte bitte ausführen benutze 'subprocess' anstelle von veraltetem' os.system' .. – heemayl
Hi @heemayl Ich folgte deinem Rat mit dem gleichen Ergebnis lts. 'subprocess.call (selbe_command, shell = True)' mit der gleichen Ausgabe: 'RTNETLINK antwortet: Keine solche Datei oder Verzeichnis' – keponk