Execute o script usando 'screen' com privilégios sudo

2

Eu estou tentando criar um script que é executado no terminal é iniciado automaticamente em uma saída 'screen' do raspberry pi. O problema aqui é que eu preciso de sudo privileges dentro do script, e uma vez que o processo está rodando eu não vejo o pedido da senha.

Um exemplo do script é o seguinte (se eu fizer isso funcionar, posso adaptar o script para outros propósitos):

1) vá para uma pasta:

cd /etc/openvpn

2) execute o serviço (isto requer privilégios de sudo):

sudo openvpn ./pia_netherlands.conf

Quando eu insiro o código manualmente, o script é executado, então não há nenhum problema, eu só tenho um problema ao executar isso dentro de uma 'tela'.

Eu configurei o seguinte script usando alguns googling:

#!/bin/sh
if [ -z "$STY" ]; then exec screen -dm -S pia /bin/bash "$0"; fi
cd /etc/openvpn
sudo openvpn ./pia_netherlands.conf

Esse script deve verificar se existe uma tela chamada 'pia' e, se não, criar uma tela chamada pia e executar o script, primeiro indo para a pasta e, em seguida, executando o arquivo openvpn.

Eu tentei um segundo script que é um pouco mais simples, mas isso também não funciona:

sudo bash screen -S pia
cd /etc/openvpn
openvpn ./pia_netherlands.conf

Este script abre uma tela bash chamada 'pia', vai para a pasta e executa o arquivo openvpn.

Ambos os métodos não estão funcionando e realmente tenho dificuldades em descobrir como executá-lo. Alguém pode me ajudar por favor?

Eu também consultei os fóruns do raspberry pi, mas ninguém respondeu, eu acho, porque isso é mais uma questão de linux do que uma questão de framboesa.

    
por Johan Antonissen 14.01.2018 / 11:50

1 resposta

1

Se eu ler a página de manual corretamente , openvpn pode atuar como um daemon (ou seja, ir para o próprio plano de fundo) com a opção --daemon .

Então, se você não precisa de screen especificamente, você pode ser capaz de:

sudo openvpn --daemon --config /etc/openvpn/pia_netherlands.conf

Algumas outras alternativas:

  • inicie screen para executar o script, insira a senha e, em seguida, desanexe o screen .
  • executa todo o screen em sudo , em vez de apenas o openvpn ? isto é sudo screen -S pia openvpn /etc/openvpn/pia_netherlands.conf

  • adicione o script a /etc/sudoers com o sinal NOPASSWD: , para poder executar esse comando específico sem inserir a senha todas as vezes.

por 14.01.2018 / 12:11