2016-05-06 2 views
0

私はbashスクリプトをPythonに移植しようとしています。 bashスクリプトが低速のネットワークをシミュレートするtcのコマンドを実行し、メインビットは次のようになります:python os.systemの回答が悪いです。 `RTNETLINK answers:そのようなファイルやディレクトリはありません。 '

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% 

スクリプトは「ただ」の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自体が適切にそれを実行するために何かが欠けているようです。 提案やリンクは大歓迎です。ありがとう!

UPDATE:いくつかのより多くの読書と私は今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

ルート

メインファイルとして別のPythonのファイルを実行するためのpythonを使用する必要がありますしてくださいしてくださいdeprecated 'os.system'の代わりに' subprocess'を使用してください.. – heemayl

+0

こんにちは@heemayl私は同じresu lts。 'subprocess.call(same_command、shell = True)'と同じ出力: 'RTNETLINKの回答:そのようなファイルやディレクトリはありません。 ' – keponk

答えて

0

tcは、sudoで正常に動作しない、あなたは

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

otherScript.py

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

私のコンピュータ上ではtcを動作させることはできません。何が起きているのかわかりません。 – mjz19910

+0

tcはサポートしていません1:1または1:12、代わりに1,2または1または12を使用してください – mjz19910

+0

こんにちは@ mjz19910、あなたの答えを詳述できますか?あなたは 'tc'に慣れている必要はありません、なぜあなたの提案が私が現在持っているものと異なるのか分かりません。いずれにせよ、私は同じ結果であなたの提案を試みました。これが解決策だと思う理由をさらに説明できるかどうか疑問に思っていました。 – keponk

関連する問題