Voglio scaricare uno script da: http://dl.dropbox.com/u/11210438/flockonus-stack.sh ed eseguirlo. La mia ipotesi è, per usare wget, rinominarlo, modificarlo ed eseguirlo.
Quali sono i comandi per farlo su Ubuntu?
Voglio scaricare uno script da: http://dl.dropbox.com/u/11210438/flockonus-stack.sh ed eseguirlo. La mia ipotesi è, per usare wget, rinominarlo, modificarlo ed eseguirlo.
Quali sono i comandi per farlo su Ubuntu?
Risposte:
attento
Prima di eseguire lo script, ti fidi della persona che l'ha scritto?
Ad esempio, ti aspettavi che lo script contenesse questo?
echo "brain1" > /etc/hostname
Ciò tenterà di modificare il nome host.
Per riferimento futuro, se, dopo aver verificato che lo script è corretto e non dannoso, è possibile eseguirlo in una riga come questa:
wget -O - http://dl.dropbox.com/u/11210438/flockonus-stack.sh | bash
Ma scaricalo separatamente e leggilo prima di eseguirlo la prima volta.
Si noti inoltre che i prompt interattivi all'interno dello script scaricato potrebbero non funzionare correttamente utilizzando questo metodo.
apt-get install
linee? Se apt-get
installasse dipendenze extra, te lo chiederà, e se non ci riuscirà uscirà per sicurezza. O aggiungi tutti i pacchetti dipendenti agli argomenti della riga di comando o considera l'aggiunta -y
, ad esempioapt-get -y install...
Script non interattivi
wget -O - http://website.com/my-script.sh | bash
Si noti che quando si utilizza questo metodo, gli script interattivi non funzioneranno.
Script interattivi
Per far funzionare gli script interattivi, puoi usare questo:
bash <(wget -qO- http://website.com/my-script.sh)
Script interattivi che devono essere eseguiti come root
Avvertenza: questo è estremamente pericoloso. Non consigliato.
sudo su -c "bash <(wget -qO- http://website.com/my-script.sh)" root
Si noti che non è possibile utilizzare semplicemente sudo bash
poiché l'utilizzo <(...)
creerà un file virtuale e il suo descrittore di file non sarà accessibile dall'istanza di root bash. Deve essere eseguito sullo stesso utente che deve leggere il file virtuale, quindi deve essere inviato come proprio comando all'interno della shell degli utenti root.
Quella sceneggiatura è da parte mia, è sicura .. Ho adorato il one-liner, ma ha alcune linee interattive che non sono state eseguite ... non so perché?
Quando dpkg viene eseguito, chiamato da apt-get, scarica lo stdin. Se stai usando un comando come curl blah | bash
, allora stai sostanzialmente inviando contenuti della pagina a bash tramite STDIN. Se uno dei tuoi comandi è apt-get, quindi viene eseguito, tutto il resto verrà scaricato.
Il trucco è usare un comando come questo apt-get install --yes denyhosts </dev/null
. Questo dà a apt-get un input diverso e semplicemente svuota / dev / null invece del resto del tuo script.
Se vuoi vedere un esempio completo di installazione di qualcosa tramite uno script remoto, puoi guardare questo script per impostare denyhosts
Per la cronaca, preferisco curl piuttosto che wget per questo, ma anche wget dovrebbe andare bene.
A tutti questi esempi manca un punto abbastanza importante. Se usi l'URL http://dl.dropbox.com/u/11210438/flockonus-stack.sh
, devi controllare lo script ogni volta che lo scarichi, perché può essere modificato da chiunque sul percorso di rete tra te e dropbox. Se passi a http s : //dl.dropbox.com/u/11210438/flockonus-stack.sh , non avrai quella fonte di insicurezza.
(Dropbox tenta di reindirizzare l'URL http su https, ma nel caso di un attacco di rete wget non riuscirà mai a parlare con il vero dropbox e non vedrebbe mai il reindirizzamento)
Prova semplicemente a scaricarlo come specificato con wget e quindi eseguendolo direttamente. Puoi diventare fantasioso e usare le variabili per lo script che vuoi scaricare ecc., Ma questo farà il trucco
Per esempio:
!#/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
potrebbe essere solo la stessa facilitàrm -rf /
.