web-dev-qa-db-ja.com

NMCLIは、直接実行するとスクリプトで機能しますが、CRONで実行すると機能しません

これはUbuntu 11.10の下にあります

PPTP VPN接続を開始していくつかのファイルを取得し、接続を閉じるスクリプトがあります。このスクリプトをターミナルプロンプトから実行すると、完全に機能します。ただし、CRONで実行するようにスケジュールすると、スクリプト内のnmcliコマンドがエラーを生成します。 VPN接続は、アカウントだけでなく、すべてのユーザーが使用するように構成されています。

スクリプトの関連する行は次のとおりです。

/usr/bin/nmcli con up id MyVPN

そして、CRONで使用するときに生成されるエラーは次のとおりです。

** (process:6360): WARNING **: _nm_object_get_property: Error getting 'WirelessHardwareEnabled' for /org/freedesktop/NetworkManager: (9) Rejected send message, 2 matched rules; type="method_call", sender=":1.624" (uid=1000 pid=6360 comm="/usr/bin/nmcli con up id MyVPN ") interface="org.freedesktop.DBus.Properties" member="Get" error name="(unset)" requested_reply="0" destination="org.freedesktop.NetworkManager" (uid=0 pid=1029 comm="NetworkManager ") ** (process:6360): WARNING **:

_nm_object_get_property: Error getting 'WwanHardwareEnabled' for /org/freedesktop/NetworkManager: (9) Rejected send message, 2 matched rules; type="method_call", sender=":1.624" (uid=1000 pid=6360 comm="/usr/bin/nmcli con up id MyVPN ") interface="org.freedesktop.DBus.Properties" member="Get" error name="(unset)" requested_reply="0" destination="org.freedesktop.NetworkManager" (uid=0 pid=1029 comm="NetworkManager ") ** (process:6360): WARNING **:

_nm_object_get_property: Error getting 'WimaxHardwareEnabled' for /org/freedesktop/NetworkManager: (9) Rejected send message, 2 matched rules; type="method_call", sender=":1.624" (uid=1000 pid=6360 comm="/usr/bin/nmcli con up id MyVPN ") interface="org.freedesktop.DBus.Properties" member="Get" error name="(unset)" requested_reply="0" destination="org.freedesktop.NetworkManager" (uid=0 pid=1029 comm="NetworkManager ") ** (process:6360): WARNING **:

_nm_object_get_property: Error getting 'State' for /org/freedesktop/NetworkManager: (9) Rejected send message, 2 matched rules; type="method_call", sender=":1.624" (uid=1000 pid=6360 comm="/usr/bin/nmcli con up id MyVPN ") interface="org.freedesktop.DBus.Properties" member="Get" error name="(unset)" requested_reply="0" destination="org.freedesktop.NetworkManager" (uid=0 pid=1029 comm="NetworkManager ")

どんなアイデアでも大歓迎です!

6
Walter Anderson

nmclicronを通過しない理由は、VPNの詳細(ユーザー名、パスワード)は、キーリングのユーザーのアカウント詳細にあります。 nmcliでは、DBusが情報を取得する必要があります。

つまり、nmcliが機能するようにシステムを構成する場合、CRONがスクリプトに提供する環境でnmcliを動作させる必要があります。

https://stackoverflow.com/questions/5819667/help-me-setup-a-cron-job-on-ubunt および http:// ubuntuforums .org/showpost.php?p = 9016250&postcount = 2 および https://wiki.archlinux.org/index.php/NetworkManager#Automatically_unlock_keyring_after_login

4
user4124

ちょうど同様の問題があり、上記の答えのどれも私のために働いた。私は画面の問題をシミュレートすることになりました:

    * * * * * /usr/bin/screen -dm

上記の行をcronに追加し、一度実行してから、オフにします。スクリーンセッションに接続します(screen -r)。スクリーンセッションが(psで)作成されたことを確認する場合、それらが大文字である場合があることに注意してください(例:ps | grep SCREEN

これでnmcliなどが失敗します。

特に、私の問題はnmcli dev wifiが正常に実行されるが、nmcli nm wifi onは実行されないということでした。

私にとっての解決策は、最終的には非常に簡単でした。 Sudoを追加しました。 cronでのみ必要です。なぜこれがそれを修正したのか分かりません。

1
Cookie

Sudo suの前にcrontab -eが働いていました。

0
nco