Wal*_*son 7 cron vpn 11.10 pptp
这是在 Ubuntu 11.10 下
我有一个脚本,用于启动 PPTP VPN 连接并获取几个文件,然后关闭连接。当我从终端提示运行此脚本时,它运行良好;但是,当我安排它与 CRON 一起运行时,nmcli脚本中的命令会产生错误。VPN 连接配置为可供任何用户使用,而不仅仅是我的帐户。
这是脚本的相关行:
/usr/bin/nmcli con up id MyVPN
Run Code Online (Sandbox Code Playgroud)
这是在 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 ")
Run Code Online (Sandbox Code Playgroud)
任何想法,将不胜感激!
nmcli不通过cron的原因是因为 VPN 详细信息(用户名、密码)驻留在密钥环中用户的帐户详细信息中。nmcli 需要 DBus 来检索信息。
也就是说,如果您想配置系统以便 nmcli 工作,您需要让 nmcli 与 CRON 为脚本提供的环境一起工作。
请参阅/sf/ask/407376721/ 和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
Run Code Online (Sandbox Code Playgroud)
将以上行添加到 cron,让它运行一次,然后将其关闭。连接到您的屏幕会话(screen -r)。如果您正在检查屏幕会话是否已创建(带有ps),请注意它们有时是大写的(例如ps | grep SCREEN)
现在nmcli类似的事情将会失败。
特别是,我注意到我的问题是nmcli dev wifi执行得很好,但又nmcli nm wifi on执行不了。
最后对我来说解决方案非常简单。我添加了一个sudo. 仅在 cron 中需要。不知道为什么这解决了它。