Это под Ubuntu 11.10
У меня есть скрипт, который запускает VPN-соединение PPTP, выбирает пару файлов, а затем закрывает соединение. Когда я запускаю этот скрипт из терминала, он работает отлично; однако, когда я планирую запустить его с 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 ")
Любые идеи будут оценены! [ 117]
Просто была похожая проблема, и ни один из приведенных выше ответов не работал для меня. В итоге я смоделировал проблему с экраном:
* * * * * /usr/bin/screen -dm
Добавьте указанную выше строку в cron, дайте ей один раз поработать, выключите. Подключитесь к экранной сессии (screen -r). Если вы проверяете, что сеанс экрана был создан (с ps
), имейте в виду, что они иногда находятся в столицах (например, ps | grep SCREEN
)
Теперь nmcli
и аналогичные сбои.
В частности, я заметил, что моя проблема была в том, что nmcli dev wifi
будет работать просто отлично, а nmcli nm wifi on
- нет.
sudo
. Нужно только в хрон. Не уверен, почему это исправило это.
Причина, по которой nmcli не проходит через cron , заключается в том, что данные VPN (имя пользователя, пароль) находятся в данных учетной записи пользователя в связке ключей. И nmcli требует DBus для получения информации.
То есть, если вы хотите настроить свою систему так, чтобы она работала, вам нужно настроить nmcli для работы со средой, которую CRON предлагает для сценариев.
См. Некоторые примеры на https://stackoverflow.com/questions/5819667/help-me-setup-a-cron-job-on-ubuntu , а также на http : //ubuntuforums.org/showpost.php? p = 9016250 & postcount = 2 и https://wiki.archlinux.org/index.php/NetworkManager#Automatics_unlock_keyring_after_login