web-dev-qa-db-fra.com

Exécuter un script shell à partir du programme de lancement avec les autorisations root

J'ai un script shell qui exécute une application graphique sur Ubuntu 12.04.

La façon dont je suis en train d’exécuter l’application est que j’ouvre le terminal et que je vais dans le répertoire qui contient ce fichier, puis fais Sudo ./shellScriptFileName qui fonctionne très bien, mais j’ai deux problèmes, c’est que cela prend tellement temps donc je voudrais ajouter un raccourci dans le lanceur, ensuite, le terminal doit rester ouvert, ce qui est pénible (j'espère que ce ne sera pas un problème une fois que je pourrai courir depuis le lanceur.

Précision: j'aimerais que le terminal soit fermé lorsque mon application commence à s'exécuter.

3
Roronoa Zoro

Il semble que ce problème ne soit pas encore résolu. Avez-vous visité le lien "Comment faire" que j'ai fourni dans le commentaire ci-dessus? Cliquez sur moi

Si vous vérifiez que vous devez résoudre ce problème de plusieurs manières, cool et sympa. Pour être simple, je voudrais recommander une méthode "fictive" pour que cela fonctionne pour vous.

  1. Ouvrez votre terminal et tapez Sudo apt-get install gnome-panel
  2. Lorsque l'installation est terminée, tapez gnome-desktop-item-edit --create-new ~/Desktop, cette commande affichera une boîte de dialogue contextuelle "Créer un lanceur", illustrée ci-dessous. enter image description here

    personnaliser vos paramètres (nom, commande, icône, etc.)

  3. Après l’étape 2, vous obtiendrez un raccourci (il s’appelle réellement * .desktop, cela dépend de votre réglage), vous pouvez le placer dans le dossier de votre choix, puis le faire glisser et le déposer dans le programme de lancement.

Ça y est, profitez de votre nouveau raccourci cuit :-), espérons que cela vous aidera.

1
vicd

Voici les étapes:

1. Création du script d'appelant interactif

Puisque vous voulez exécuter le script et que avoir le terminal rester en mode interactif, nous devons utiliser un script appelant spécial, qui nécessite à son tour expect. Nous supposerons que le script que vous souhaitez exécuter s'appelle test.sh

  • Installez expect avec Sudo apt-get -y install expect
  • Créez le script appelant avec ce format:

     #!/usr/bin/expect -f 
     
     spawn -noecho bash # créer un shell 
     attendre "$" # attendre l'attente 
     envoyer "cd/path to script\n" # votre répertoire de script 
     envoyer "./test.sh\n" # votre nom de script 
     interact # passer en mode interactif 
    
  • Faites le script appelant, dites call_test.sh, exécutable avec

    Sudo chmod +x /path/to/call_test.sh

2. Créer le lanceur

  • Appuyez sur Alt+F2 et saisissez gksudo gedit /usr/share/applications/TestSH.desktop, où TestSH correspond à tout ce que vous souhaitez appeler l’icône de votre programme de lancement.
  • Le fichier est de la forme suivante:

     [Entrée du bureau] 
     Version = 1.0 # votre version de script 
     Type = Application 
     Terminal = true # vous voulez un terminal, donc ... 
     StartupNotify = true 
     Icon = # peut être un élément intégré (/usr/share/icons)
     # Ou un fichier personnalisé, SVG ou PNG 
     Name = TestSH # Quel que soit votre choix, appelez-le 
     Commentaire = # description 
     Exec =/chemin/vers/test- appel.sh # Chemin vers le script de l'appelant 
     Catégories = Application; 
    
  • Enfin, assurez-vous que le script actuel est exécutable, avec Sudo chmod +x /path/to/test.sh

  • Fermez l'éditeur et recherchez "TestSH" (nom du script) dans le HUD; vous verrez l’icône sur laquelle vous pouvez cliquer et vous faites également glisser le lanceur ou le bureau pour l’ajouter à cet endroit.
2
ish

Faire en sorte que le terminal reste ouvert après n’est pas un processus très facile, mais voici ce que je suggère:

Créez un nouveau script avec le contenu suivant: gksudo /path/to/Shell/script et enregistrez-le sur votre bureau. Ajoutez le terminal au lanceur. Pour ouvrir le programme, ouvrez le terminal à partir du programme de lancement et cliquez le script du bureau sur le terminal.

Ou, si vous n'avez pas nécessairement besoin d'ouvrir le terminal une fois le programme terminé, créez un script comme ci-dessus, enregistrez-le dans n'importe quel répertoire et suivez ce guide pour en faire un icône de lanceur: http: // ubuntuforums.org/showthread.php?t=1700605

J'aimerais que le processus soit un peu plus fluide, mais bon, c'est pourquoi j'utilise Kubuntu ...

1
Richard