NMCLI работает в скрипте, когда я запускаю его напрямую, но не в CRON

Это под 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]

6
задан 3 March 2012 в 19:40

3 ответа

Просто была похожая проблема, и ни один из приведенных выше ответов не работал для меня. В итоге я смоделировал проблему с экраном:

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

Добавьте указанную выше строку в cron, дайте ей один раз поработать, выключите. Подключитесь к экранной сессии (screen -r). Если вы проверяете, что сеанс экрана был создан (с ps), имейте в виду, что они иногда находятся в столицах (например, ps | grep SCREEN)

Теперь nmcli и аналогичные сбои.

В частности, я заметил, что моя проблема была в том, что nmcli dev wifi будет работать просто отлично, а nmcli nm wifi on - нет.

1111 В конце концов, решение для меня было довольно простым. Я добавил sudo. Нужно только в хрон. Не уверен, почему это исправило это.

0
ответ дан 3 March 2012 в 19:40

Причина, по которой 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

0
ответ дан 3 March 2012 в 19:40

sudo su прежде crontab -e работал на меня.

0
ответ дан 14 September 2019 в 13:05

Другие вопросы по тегам:

Похожие вопросы: