我正在尝试将bash脚本移植到python。 bash脚本运行tc
命令来模拟慢速网络,主要位如下:
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%
脚本“just”可以作为sudo运行。
python中完全相同的行失败了,它们看起来像这样:
>>> 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
在类似的问题中,人们建议缺少内核模块,我发现这种情况不同,因为从终端运行时tc
命令工作正常。似乎python本身缺少能够正确运行它的东西。
欢迎任何建议或链接。谢谢!
更新
在更多阅读和评论指针后,我现在更新了脚本以使用subprocess.call()
。这应该取代os.system
次来电,但不会导致我手头的问题发生变化。
>>> 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
答案 0 :(得分:0)
tc与sudo无法正常工作,你应该使用python以root身份运行另一个python文件
主档
import os
os.system("sudo python otherScript.py")
otherScript.py
import os
os.system("{tc command}")...