O script Bash não está funcionando corretamente quando executado automaticamente

2

Eu tenho um script que define meu proxy automaticamente, dependendo da conexão e, portanto, é colocado na pasta /etc/network/if-up.d/. Eu defino o proxy usando a ferramenta gsettings e, em seguida, quero mostrar uma notificação na área de trabalho.

Eu uso notificar o OSD da seguinte forma:

notify-send -u 'critical' -i /home/vivek/Downloads/proxy.ico 'SetProxy Status' 'proxy set to auto'

O script é executado corretamente porque tentei imprimir algumas mensagens de log em um arquivo que sugere que o script está sendo executado. Mas não vejo nenhuma alteração visível ao verificar minhas configurações de proxy, Configurações do sistema e Proxy de rede. Eu vejo que o proxy é inalterado, embora tenha mudado na verdade [eu verifiquei o navegador e as configurações de proxy foram aplicadas], também não vejo nenhuma notificação.

Surpreendentemente, se eu executar o script explicitamente da seguinte forma:

cd /etc/network/if-up.d/
sudo ./setproxy

Eu vejo a notificação de uma só vez e também as alterações são refletidas nas configurações do Proxy de rede. Por que isso acontece? Como posso consertar isso? Eu estou em um sistema 12.04 do Ubuntu.

    
por Vivek Pradhan 30.12.2012 / 09:21

2 respostas

1

Qualquer coisa que não esteja na sua pasta pessoal precisa de permissão de root para ser executada por segurança no caso de sistemas multiusuários. Coloque o script de configurações de proxy na pasta inicial dentro de uma pasta especial, digamos ~/commands . Adicione esta linha PATH=$PATH:~/commands em .bashrc

% bl0ck_qu0te%

Agora, toda vez que você executar setproxy como qualquer outro comando, como ls ou date , o proxy será definido. Basta adicionar sudo no script para evitar conflitos de permissões.

Alternativamente 1:

Este fórum explica sobre Upstart , que é bastante simples de usar.

Alternativamente 2:

Basta ativar a conta root no seu sistema e usá-la sempre.
Aviso: Isso é perigoso para o sistema, caso você não esteja familiarizado com o funcionamento do sistema, você tende a cometer erros tolos ou descuidados alguma razão está distraída e, sem saber, comete um erro.

    
por VedVals 30.12.2012 / 10:16
0

Eu sugeriria apenas adicionar o script a / etc / bash_completion, que deve ser usado toda vez que você abrir um terminal como está contido no final de ~ / .bashrc. Alternativamente, você pode adicionar o script ao final de ~ .bashrc diretamente. Se você optar por adicioná-lo ao bash_completion, ele deve conter a linha

. /etc/network/if-up.d/setproxy

e você deve checar ~. / bashrc para ter certeza que bash_completion é usado (está no final do arquivo). O fim do meu ~. / Bashrc parece

# enable programmable completion features (you don't need to enable
# this, if it's already enabled in /etc/bash.bashrc and /etc/profile
# sources /etc/bash.bashrc).
if [ -f /etc/bash_completion ] && ! shopt -oq posix; then
. /etc/bash_completion
fi

Só para garantir que o bash_completion não seja comentado.

    
por fred.smalley 30.12.2012 / 09:35