Je souhaite télécharger un script depuis: http://dl.dropbox.com/u/11210438/flockonus-stack.sh et l'exécuter. Ma conjecture est, pour utiliser wget le renommer, le modifier et l'exécuter.
Quelles sont les commandes pour le faire sur Ubuntu?
Je souhaite télécharger un script depuis: http://dl.dropbox.com/u/11210438/flockonus-stack.sh et l'exécuter. Ma conjecture est, pour utiliser wget le renommer, le modifier et l'exécuter.
Quelles sont les commandes pour le faire sur Ubuntu?
Réponses:
Prudent
Avant d'exécuter le script, faites-vous confiance à la personne qui l'a écrit?
Par exemple, vous attendiez-vous à ce que le script contienne cela?
echo "brain1" > /etc/hostname
Cela va essayer de changer votre nom d'hôte.
Pour référence future, si, après avoir vérifié que le script est correct et non malveillant, vous pouvez l'exécuter sur une seule ligne comme ceci:
wget -O - http://dl.dropbox.com/u/11210438/flockonus-stack.sh | bash
Mais téléchargez-le séparément et lisez-le avant de l'exécuter la première fois.
Notez également que les invites interactives dans le script téléchargé peuvent ne pas fonctionner correctement à l'aide de cette méthode.
apt-get install
lignes? Si apt-get
installerait des dépendances supplémentaires, il vous le demandera, et s'il ne le peut pas, il quittera simplement pour être sûr. Soit ajoutez tous les packages dépendants aux arguments de la ligne de commande, soit envisagez d'ajouter -y
, par exempleapt-get -y install...
Scripts non interactifs
wget -O - http://website.com/my-script.sh | bash
Notez que lorsque vous utilisez cette méthode, les scripts interactifs ne fonctionneront pas.
Scripts interactifs
Pour que les scripts interactifs fonctionnent, vous pouvez utiliser ceci:
bash <(wget -qO- http://website.com/my-script.sh)
Scripts interactifs qui doivent être exécutés en tant que root
Avertissement: c'est extrêmement dangereux. Non recommandé.
sudo su -c "bash <(wget -qO- http://website.com/my-script.sh)" root
Notez que vous ne pouvez pas utiliser simplement sudo bash
car l'utilisation <(...)
créera un fichier virtuel et son descripteur de fichier ne sera pas accessible à partir de l'instance bash de root. Il doit être exécuté sur le même utilisateur qui doit lire le fichier virtuel, il doit donc être envoyé comme sa propre commande dans le shell des utilisateurs root.
Ce script est de moi, il est sûr .. J'ai adoré le one-liner, mais il a des lignes interactives qui ne fonctionnaient pas .. ne sais pas pourquoi?
Lorsque dpkg s'exécute, appelé par apt-get, il vide stdin. Si vous utilisez une commande comme curl blah | bash
, alors vous envoyez essentiellement le contenu de la page à bash via STDIN. Si l'une de vos commandes est apt-get, puis s'exécute, tout le reste sera vidé.
L'astuce consiste à utiliser une commande comme celle-ci apt-get install --yes denyhosts </dev/null
. Cela donne à apt-get une entrée différente, et il vide simplement / dev / null au lieu du reste de votre script.
Si vous voulez voir un exemple complet d'installation de quelque chose via un script distant, vous pouvez regarder ce script pour configurer les denyhosts
Pour mémoire, je préfère le curl plutôt que le wget pour cela, mais le wget devrait également convenir.
Tous ces exemples manquent un point assez important. Si vous utilisez l'URL http://dl.dropbox.com/u/11210438/flockonus-stack.sh
, vous devez auditer le script chaque fois que vous le téléchargez, car il peut être modifié par n'importe qui sur le chemin réseau entre vous et dropbox. Si vous passez à http s : //dl.dropbox.com/u/11210438/flockonus-stack.sh , vous n'aurez pas cette source d'insécurité.
(Dropbox essaie de rediriger l'URL http vers https, mais dans le cas d'une attaque réseau, wget ne pourra jamais parler à la vraie dropbox et ne verra jamais la redirection)
Essayez simplement de le télécharger comme vous l'avez spécifié avec wget, puis de l'exécuter directement. Vous pouvez avoir de la fantaisie et utiliser des variables pour le script que vous souhaitez télécharger, etc., mais cela fera l'affaire
Par exemple:
!#/bin/bash
#Change to temp directory
cd /tmp
#Download file using wget
wget http://dl.dropbox.com/u/11210438/flockonus-stack.sh
#Execute the file
sh flockonus-stack.sh
echo "brain1" > /etc/hostname
pourrait tout aussi bien l'êtrerm -rf /
.