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

6

Это находится под 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 ")

Любые идеи будут оценены!

    
задан Walter Anderson 24.02.2012 в 20:44
источник

2 ответа

4

Причина, пока nmcli не проходит через cron , потому что данные VPN (имя пользователя, пароль) находятся в данных учетной записи пользователя в брелоке. И nmcli требует DBus для извлечения информации.

То есть, если вы хотите сконфигурировать свою систему, чтобы работать с nmcli, вам нужно заставить nmcli работать со средой, которую CRON предлагает для скриптов.

См. примеры Ссылка а также в ссылке и Ссылка

    
ответ дан user4124 24.02.2012 в 22:07
1

У меня была аналогичная проблема, и ни один из вышеперечисленных ответов не работал для меня. Я закончил симуляцию проблемы с экраном:

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

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

Теперь nmcli и подобное не будут выполнены.

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

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

    
ответ дан Cookie 27.03.2014 в 12:50