NMCLI funciona em script quando eu corro diretamente, mas não quando executado em CRON

5

Isso está no Ubuntu 11.10

Eu tenho um script que inicia uma conexão VPN PPTP busca alguns arquivos e fecha a conexão. Quando executo este script a partir de um terminal, ele funciona perfeitamente; no entanto, quando eu programo para executar com CRON, os comandos nmcli no script geram erros. As conexões VPN estão configuradas para serem usadas por qualquer usuário, não apenas pela minha conta.

Aqui está a linha relevante do script:

/usr/bin/nmcli con up id MyVPN

E aqui estão os erros gerados ao usá-lo no 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 ")

Qualquer ideia seria apreciada!

    
por Walter Anderson 24.02.2012 / 20:44

2 respostas

4

A razão pela qual nmcli não é através do cron é porque os detalhes da VPN (nome de usuário, senha) residem nos detalhes da conta do usuário no chaveiro. E o nmcli exige que o DBus recupere as informações.

Isto é, se você quiser configurar seu sistema para que o nmcli funcione, você precisa que o nmcli trabalhe com o ambiente que o CRON oferece aos scripts.

Veja alguns exemplos no link e também no link e link

    
por user4124 24.02.2012 / 22:07
1

Apenas tive um problema semelhante e nenhuma das respostas acima funcionou para mim. Acabei simulando o problema com a tela:

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

Adicione a linha acima ao cron, deixe-a executar uma vez, desligue-a novamente. Conecte-se à sua sessão de tela (tela -r). Se você estiver verificando, a sessão da tela foi criada (com ps ), saiba que às vezes elas estão em maiúsculas (por exemplo, ps | grep SCREEN )

Agora, nmcli e semelhantes falharão.

Em particular, observei que meu problema era que nmcli dev wifi seria executado muito bem, mas nmcli nm wifi on não.

A solução para mim foi bastante simples no final. Eu adicionei um sudo . Apenas necessário no cron. Não sei por que isso resolveu isso.

    
por Cookie 27.03.2014 / 12:50