NMCLI 在我直接运行时在脚本中工作,但在 CRON 中运行时不起作用

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)

任何想法,将不胜感激!

use*_*124 4

nmcli不通过cron的原因是因为 VPN 详细信息(用户名、密码)驻留在密钥环中用户的帐户详细信息中。nmcli 需要 DBus 来检索信息。

也就是说,如果您想配置系统以便 nmcli 工作,您需要让 nmcli 与 CRON 为脚本提供的环境一起工作。

请参阅/sf/ask/407376721/http://ubuntuforums.org/showpost.php?p=9016250&postcount=上的一些示例2https://wiki.archlinux.org/index.php/NetworkManager#Automatically_unlock_keyring_after_login


Coo*_*kie 1

刚刚遇到了类似的问题,以上答案都不适合我。我最终用屏幕模拟了问题:

    * * * * * /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 中需要。不知道为什么这解决了它。