web-dev-qa-db-fra.com

Besoin d'exécuter un .sh en tant que root au démarrage ou à la connexion

Toujours nouveau avec linux et en cours d'exécution Ubuntu 12.10

J'ai une clé sans fil (ae2500) qui a des problèmes connus qui ont été partiellement résolus à l'aide de ndiswrapper. Cependant, pour l'utiliser, je dois exécuter les mêmes scripts à chaque redémarrage, ce qui permet de désinstaller et de réinstaller le pilote. J'ai créé un fichier .sh à exécuter à chaque fois pour simplifier les choses, mais je dois toujours me connecter à Sudo.

Il y a trois solutions que je cherche et bien que toutes ne soient pas nécessaires pour résoudre ce problème particulier, j'aimerais quand même les connaître toutes à des fins d'apprentissage.

  1. lancer des scripts ou file.sh au démarrage (ainsi que d'autres programmes)
  2. exécuter des scripts ou file.sh automatiquement avec les privilèges root
  3. rendre l'installation permanente afin de ne pas avoir à passer par le processus à chaque fois.

Toute information supplémentaire susceptible de m'aider à cet égard que je ne pensais pas demander (y compris la rationalisation de mes commandes) ou des connaissances générales serait grandement appréciée. Voici le contenu du fichier. J'ai à peu près juste fait comme je l'aurais entré.

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
3
Graymayre

Pour qu'un fichier soit exécuté au démarrage, vous voulez essentiellement mettre le fichier .desktop dans /etc/xdg/autostart/

Voici comment configurer un fichier .desktop pour votre fichier à partir de la ligne de commande:

Sudo mv file.sh /usr/bin

Cela déplace le chemin du fichier shell vers /usr/bin.

Ensuite aller à

/usr/share/applications

Ensuite, vous voulez créer un fichier .desktop afin de taper

Sudo -H gedit file.desktop & 

Le & signifie que vous pouvez toujours utiliser le terminal tout en laissant le fichier ouvert. Pratique si vous avez la mémoire d'un poisson rouge comme moi.

Dans gedit, écrivez:

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

Vous pouvez le fermer maintenant si vous le souhaitez. Vous pouvez égayer avec une icône en ajoutant la ligne icon=path/to/icon aussi si cela vous tente.

Maintenant, pour que ce fichier fonctionne au démarrage, vous devez en enregistrer une copie dans

/etc/xdg/autostart/

Cela devrait fonctionner à condition que le script (myfile.sh) fonctionne déjà, c'est-à-dire.

4
Magpie

Vous pouvez essayer de placer votre fichier.sh dans /etc/init.d/ et utiliser update-rc.d

update-rc.d file.sh defaults
3
Allfo

Pour l'exécuter à la connexion (je suis sur 12.04, donc cela pourrait être légèrement différent), il suffit de cliquer sur le menu en haut à droite (avec les options d'arrêt) et de cliquer sur Applications de démarrage ...

Cliquez ensuite sur Add, donnez-lui un nom et une description, puis accédez à l'emplacement du script bash. déconnectez-vous, puis reconnectez-vous et cela devrait fonctionner.

Si vous le faites de cette façon, je suggérerais de changer Sudo en gksudo dans votre script afin qu'il demande ensuite les privilèges Sudo dans une interface graphique de Nice, plutôt que de rester assis sur le terminal pour le demander. .

1
ScottC

J'ai une suggestion alternative aux autres réponses: utiliser crontab

en tant que root exécuter crontab et ajouter un travail comme tel

@reboot/path/to/your/script

http://en.wikipedia.org/wiki/Cron#Predefined_scheduling_definitions

C'est comme ça que je réglerais ce problème. Je ne suis pas disposé à dire que c'est meilleur ou pire que d'autres réponses et je serais heureux de recevoir des commentaires.

1
emory

[Ceci est une combinaison de la réponse de pie et de ma propre expérience.]

Pour obtenir un script .sh (ou tout autre script) à exécuter au démarrage, vous voulez;

  1. Placez votre script dans un endroit facilement accessible (par exemple, votre bureau).
  2. Assurez-vous que si vous cliquez avec le bouton droit de la souris sur le script et que vous accédez aux propriétés, dans l'onglet "Autorisations", il est indiqué à "Exécuter"; 'N'importe qui'.
  3. Ouvrez le bloc-notes ou tout autre éditeur de texte et tapez:

    [Desktop Entry]
    Name=yourScriptName
    Exec=/usr/bin/yourScript.sh
    Type=Application
    Terminal=false
    
  4. Appuyez sur Ctrl + S et, comme nom, renseignez "scriptName.desktop", puis enregistrez-le sur votre bureau.
  5. Ouvrez le terminal avec Ctrl + Alt + T.
  6. Type:

    cd ~/Desktop
    

    Le ~ signifie la maison, il devrait maintenant dire quelque chose comme:

    userName@computerName:~/Desktop$
    
  7. Ensuite:

    Sudo mv yourScript.sh /usr/bin
    

(il est généralement recommandé de le mettre dans /usr/local/bin afin qu'il puisse être exécuté directement par la commande yourScript.sh au lieu de "/ chemin/vers/script").

    Sudo cp scriptName.desktop /usr/share/applications

    Sudo mv scritptName.desktop /etc/xdg/autostart

C'est ça!

Je suis sur lubuntu 17.04 et cela fonctionne très bien pour moi,
J'espère que ce fut une explication utile et claire :).

Wessel

0
GamingWessel