web-dev-qa-db-fra.com

Desktop Launcher Execute Bash Script In Terminal à partir de l'URL

Ma configuration est que j'ai un site Web (www.example.com) sur lequel j'ai téléchargé des scripts bash sur www.example.com/location/of/bash/script.txt.

Je voudrais maintenant un fichier Desktop Launcher (.desktop) que je peux utiliser pour ouvrir le terminal, puis lancer l’exécution du script à partir du site Web. Jusqu'à présent, j'ai créé un fichier .desktop qui peut ouvrir le terminal mais ne pas exécuter correctement le script à partir de l'URL.

Ma commande dans le fichier .desktop est

gnome-terminal --execute bash -c "http: www.example.com/location/of/bash/script.txt"; frapper

Lorsque je clique sur le fichier .desktop, il s'ouvre, tente d'exécuter le script et génère le message d'erreur "Aucun fichier ou répertoire de ce type". Toute aide à cet égard est très appréciée.

2
KrewTahn

Aussi simple et dangereux:

Faites votre fichier de bureau ressembler à ceci:

[Desktop Entry]
Type=Application
Encoding=UTF-8
Name=Sample Application Name
Comment=A sample application
Exec=sh -c 'curl -s http://www.example.com/path/to/script.sh | bash'
Icon=application.png
Terminal=true

Cela créera un sous-shell, exécutera 'curl' pour lire le fichier, puis le dirigera vers bash.

6
user323419

Simple et dangereux. Dangereux? Oui, voir ci-dessous…

wget -q -O - http://www.example.com/location/of/bash/runhello | bash

ou avec

bash <(curl -s http://www.example.com/location/of/bash/runhello)

ou une autre combinaison de wget/curl et bash.


Attention:

C'est peut-être une bonne idée pour vos propres scripts, mais pas pour les autres:

Vérifiez le contenu du script avant en cours d'exécution et jamais exécutez un script de la manière bash <(curl -s URL) ou wget -q -O - URL | bash.

0
A.B.

Je vous suggère de créer un script qui effectue tout en 2 étapes: téléchargez le script d'origine, puis exécutez-le localement.

Quelque chose comme ça :

#!/bin/bash

#download , save as /tmp/script
wget -O /tmp/script.sh www.example.com/location/of/bash/script.txt
#give executable permissions
chmod +x /tmp/script.sh
# run it
gnome-terminal --execute bash -c "/tmp/script.sh; bash"
0