Comando sudo e tela automatizado

0

Eu gostaria de poder iniciar um script em uma sessão de comando de tela separada como um usuário separado quando eu executar um script .sh.

Aqui está o que eu acho que pode estar no script:

#I am also starting xampp here, as that is what runs the webserver on this server
sudo /opt/lampp/lampp start 
screen sudo -u minecraft /home/minecraft/mc1/rtoolkit.sh
screen sudo -u minecraft /home/minecraft/mc2/rtoolkit.sh

Como você pode ver, neste script existem várias instâncias de 'sudo'. Sudo requer que eu insira uma senha, estou planejando fazer com que este script seja executado automaticamente quando o servidor for inicializado. O outro problema é que a tela pode ter um prompt de login.

Mais informações: Sistema operacional: servidor Ubuntu 12.04 LTS

    
por john01dav 31.03.2014 / 12:45

2 respostas

0

Basta deixar o usuário minecraft iniciar a sessão quando você iniciar a máquina.

  1. Execute sudo -u minecraft crontab -e para editar o crontab de usuários.

  2. Adicione @reboot screen /home/minecraft/mc1/rtoolkit.sh para fazer o cron iniciar a sessão de tela para o usuário quando o sistema for reiniciado.

Como lidar com esse prompt de login depende do próprio prompt. Sem mais informações, isso será difícil de responder e provavelmente deve ter sua própria pergunta.

Para resolver suas dúvidas nos comentários:

  1. Não, isso não exige que você faça login como usuário de minecraft. Você está apenas configurando-o para que, quando o sistema iniciar, o próprio sistema cuide de iniciar a sessão de tela como o usuário de minecraft.

    Usando sudo -u minecraft , você está executando um comando como o usuário do minecraft. Portanto, assim como você editou a tabela cron dos usuários, você poderá reabrir a sessão de tela executando sudo -u screen -r .

    Você verá que a sessão de tela será iniciada pelo usuário do minecraft. Quando você começou a sessão de tela antes e depois, dentro da sessão de tela, iniciou seu script como o usuário de minecraft.

    Agora, você está simplesmente migrando para o contexto do usuário de minecraft um passo antes.

  2. Não, esse comportamento não é exclusivo para reinicializações. Não existe realmente uma diferença entre uma "reinicialização" e uma "inicialização normal";)

por 31.03.2014 / 13:15
0

A maneira correta de iniciar um daemon na inicialização é usar scripts init em /etc/rc[0-6].d (encontrado em /etc/rc.d/rc[0-6].d em alguns sistemas). Uma tarefa agendada com @reboot funcionará, mas o cron é destinado a scripts que são executados uma vez e, em seguida, saem em vez de gerarem daemons.

No seu exemplo, você está tentando iniciar o LAMPP a partir do cron. Em vez disso, você deve criar links simbólicos de /etc/rc?.d apontando para /etc/init.d/lampp , que por sua vez aponta para /opt/lampp/lampp , da seguinte maneira:

sudo ln -s /opt/lampp/lampp /etc/init.d/
sudo update-rc.d lampp defaults
    
por 30.01.2015 / 17:17