これは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 ")
どんなアイデアでも大歓迎です!
nmcliがcronを通過しない理由は、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
ちょうど同様の問題があり、上記の答えのどれも私のために働いた。私は画面の問題をシミュレートすることになりました:
* * * * * /usr/bin/screen -dm
上記の行をcronに追加し、一度実行してから、オフにします。スクリーンセッションに接続します(screen -r)。スクリーンセッションが(ps
で)作成されたことを確認する場合、それらが大文字である場合があることに注意してください(例:ps | grep SCREEN
)
これでnmcli
などが失敗します。
特に、私の問題はnmcli dev wifi
が正常に実行されるが、nmcli nm wifi on
は実行されないということでした。
私にとっての解決策は、最終的には非常に簡単でした。 Sudo
を追加しました。 cronでのみ必要です。なぜこれがそれを修正したのか分かりません。
Sudo su
の前にcrontab -e
が働いていました。