2017-10-18 5 views
0

私は奇妙な問題に直面しています。私は次の行を含むPythonスクリプトを持っていますcronで実行したときにPythonの1つのシステムコマンドが動作しない

subprocess.call("ifconfig ens3 inet6 add " + str(address) + "/64", shell=True) 

ループにOSを割り当てます。私が直面している問題は、IPを手動で実行するとIPが割り当てられるが、再起動時にcronを実行するとIPが割り当てられないということです。私は結果をログに送るので、起動時にスクリプトが実行されることはわかります。しかし、ip -6 addrでチェックすると、スクリプトがcronで実行された場合、IPは割り当てられません。しかし、私はそれを自分で実行する場合、彼らは割り当てられます。

+2

Cronに '$ PATH'変数がないことがあり、' ifconfig'の場所を見つけることができません。あなたは '/ sbin/ifconfig'(または' ifconfig'がどこにあってもよい)で置き換えようとしましたか? –

+0

私はそれを試してみる – Arya

+0

それは働いた。あなたはそれを答えに書くことができます。私はそれを受け入れます – Arya

答えて

0

時々、Cronは$PATH変数セットを持たないため、ifconfigの場所を見つけることができません。それを/sbin/ifconfig(またはifconfigの場合はどこでもかまいません)に置き換えてください。

+0

技術的には、私は 'cron'とシステム上の他のすべてのプロセスを信じていますが、' init'やその他の初期ブートの例外を除いて 'PATH'変数を利用できます。私のシステムでは、確かに '/ proc//environ'を見ています。その 'PATH'変数の内容は、しばしばユーザが期待しているものではないと言うのが正しいです。 – twalberg

関連する問題