来自python os.system的错误答案`RTNETLINK答案:没有这样的文件或目录`

时间:2016-05-06 02:14:30

标签: python linux bash subprocess

我正在尝试将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

1 个答案:

答案 0 :(得分:0)

tc与sudo无法正常工作,你应该使用python以root身份运行另一个python文件

主档

import os
os.system("sudo python otherScript.py")

otherScript.py

import os
os.system("{tc command}")...