我正在尝试将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
tc不能正常使用sudo,您应该使用python作为根运行另一个python文件
主文件
import os
os.system("sudo python otherScript.py")
otherScript.py
import os
os.system("{tc command}")...