Precisa executar um .sh como root na inicialização ou login

3

Ainda novo no linux e executando o Ubuntu 12.10

Eu tenho um stick sem fio (ae2500) que tem problemas conhecidos que foram parcialmente resolvidos usando o ndiswrapper. No entanto, para usá-lo, devo executar os mesmos scripts toda vez que eu reiniciar, efetivamente desinstalando e reinstalando o driver. Eu fiz um arquivo .sh para ser executado toda vez para facilitar, mas preciso fazer o login do sudo toda vez.

Existem três soluções que estou procurando e, embora nem todas sejam necessárias para resolver esse problema específico, ainda gostaria de conhecê-las para fins de aprendizado.

  1. executar scripts ou arquivo.sh na inicialização (bem como outros programas)
  2. execute scripts ou file.sh automaticamente com privilégios de root
  3. torna a instalação permanente para não ter que passar pelo processo todas as vezes.

Qualquer informação adicional que possa me ajudar com relação a isso que eu não tenha pensado em perguntar (incluindo simplificar meus comandos), ou conhecimento geral, seria muito apreciada. A seguir, o conteúdo do arquivo. Eu praticamente fiz isso como eu teria entrado.

cd ~/ndiswrapper-1.58rc1

sudo modprobe -rf ndiswrapper
sudo rm /etc/modprobe.d/ndiswrapper.conf
sudo rm -r /etc/ndiswrapper/*
sudo depmod -a

sudo make uninstall
sudo make
sudo make install
sudo ndiswrapper -i bcmwlhigh5.inf
ndiswrapper -l
sudo modprobe ndiswrapper
    
por Graymayre 19.01.2013 / 22:34

5 respostas

4

Para obter um arquivo para executar na inicialização, você basicamente quer colocar o. /etc/xdg/autostart/

Aqui está como configurar um .desktop para o seu arquivo a partir da linha de comando:

sudo mv file.sh /usr/bin

Isso move o caminho do arquivo do shell para /usr/bin .

Depois vá para

/usr/share/applications

Nextyou deseja criar um arquivo .desktop para digitar

sudo -H gedit file.desktop & 

O & amp; significa que você ainda pode usar o terminal, mas deixar o arquivo aberto. Útil se você tiver uma memória de peixinho como eu.

Em gedit, escreva:

[Desktop Entry]
Name=myfileName
Exec=/usr/bin/file.sh
Type=Application
Terminal=false

Você pode fechá-lo agora, se quiser. Você pode improvisar com um ícone adicionando a linha icon=path/to/icon também, se isso lhe agradar.

Agora, para que esse arquivo seja executado no início, você precisa salvar uma cópia dele em

/etc/xdg/autostart/

Isso deve funcionar desde que o script (myfile.sh) já esteja funcionando, ou seja,

    
por Magpie 19.01.2013 / 23:46
3

Você pode tentar colocar o arquivo file.sh em /etc/init.d/ e usar update-rc.d

update-rc.d file.sh defaults
    
por Allfo 19.01.2013 / 22:59
1

Para executá-lo no login (eu estou no 12.04, então isso pode ser um pouco diferente), basta clicar no menu no canto superior direito (com as opções de desligamento) e clicar em Startup Applications ...

Em seguida, clique em Add , dê um nome e descrição e navegue até o local do script. logout, depois de volta e deve funcionar.

Se você estiver fazendo isso, sugiro alterar sudo to gksudo em seu script para que ele peça privilégios de sudo em uma interface gráfica agradável, em vez de apenas ficar no terminal solicitando isso.

    
por ScottC 20.01.2013 / 03:14
1

Eu tenho uma sugestão alternativa para as outras respostas: use crontab

como root execute o crontab e adicione um trabalho como esse

@reboot / caminho / para / seu / script

link

É assim que eu resolvo esse problema. Não estou preparado para dizer que é melhor ou pior do que outras respostas e gostaria de receber comentários.

    
por emory 20.01.2013 / 04:19
0

[Esta é uma combinação da resposta do magpie e minha própria experiência.]

Para obter um script .sh (ou qualquer outro script) para executar na inicialização desejada,

  1. Coloque seu script em um local de fácil acesso (por exemplo, sua área de trabalho).
  2. Certifique-se de que, se você clicar com o botão direito do mouse no script, vá para propriedades, na guia "Permissões", em "Executar"; 'Alguém'.
  3. Abra o leafpad ou qualquer outro editor de texto e digite:

    [Desktop Entry]
    Name=yourScriptName
    Exec=/usr/bin/yourScript.sh
    Type=Application
    Terminal=false
    
  4. Pressione Ctrl + S e, como nome, preencha "scriptName.desktop" e salve-o em sua área de trabalho.
  5. Abra o terminal com Ctrl + Alt + T.
  6. Tipo:

    cd ~/Desktop
    

    O ~ significa casa, agora deveria dizer algo como:

    userName@computerName:~/Desktop$
    
  7. Então:

    sudo mv yourScript.sh /usr/bin
    

(geralmente é recomendado colocá-lo em /usr/local/bin para que ele possa ser executado diretamente pelo comando yourScript.sh em vez de "/ path / to / script").

    sudo cp scriptName.desktop /usr/share/applications

    sudo mv scritptName.desktop /etc/xdg/autostart

É isso aí!

Estou no lubuntu 17.04 e funciona muito bem para mim,
Espero que esta seja uma explicação útil e clara:).

Wessel

    
por GamingWessel 08.06.2017 / 20:29