Ich möchte ein Skript von http://dl.dropbox.com/u/11210438/flockonus-stack.sh herunterladen und ausführen. Ich vermute, es mit wget umzubenennen, es zu chmodieren und auszuführen.
Was sind die Befehle, um das unter Ubuntu zu tun?
Ich möchte ein Skript von http://dl.dropbox.com/u/11210438/flockonus-stack.sh herunterladen und ausführen. Ich vermute, es mit wget umzubenennen, es zu chmodieren und auszuführen.
Was sind die Befehle, um das unter Ubuntu zu tun?
Antworten:
Vorsichtig
Vertrauen Sie der Person, die das Skript geschrieben hat, bevor Sie es ausführen?
Haben Sie beispielsweise erwartet, dass das Skript dies enthält?
echo "brain1" > /etc/hostname
Dadurch wird versucht, Ihren Hostnamen zu ändern.
Zum späteren Nachschlagen können Sie das Skript, nachdem Sie überprüft haben, ob es korrekt und nicht böswillig ist, in einer Zeile wie der folgenden ausführen:
wget -O - http://dl.dropbox.com/u/11210438/flockonus-stack.sh | bash
Laden Sie es jedoch separat herunter und lesen Sie es, bevor Sie es zum ersten Mal ausführen.
Beachten Sie auch, dass interaktive Eingabeaufforderungen im heruntergeladenen Skript mit dieser Methode möglicherweise nicht ordnungsgemäß funktionieren.
apt-get install
Zeilen? Wenn apt-get
zusätzliche Abhängigkeiten installiert werden, werden Sie gefragt, und wenn dies nicht möglich ist, wird das Programm aus Sicherheitsgründen beendet. Fügen Sie entweder alle abhängigen Pakete zu den Befehlszeilenargumenten hinzu, oder ziehen Sie in Betracht -y
, z. B.apt-get -y install...
Nicht interaktive Skripte
wget -O - http://website.com/my-script.sh | bash
Beachten Sie, dass interaktive Skripte bei dieser Methode nicht funktionieren.
Interaktive Skripte
Damit interaktive Skripte funktionieren, können Sie Folgendes verwenden:
bash <(wget -qO- http://website.com/my-script.sh)
Interaktive Skripte, die als root ausgeführt werden müssen
Warnung: Dies ist äußerst gefährlich. Nicht empfohlen.
sudo su -c "bash <(wget -qO- http://website.com/my-script.sh)" root
Beachten Sie, dass Sie nicht einfach verwenden können, sudo bash
da mit <(...)
eine virtuelle Datei erstellt wird und der Dateideskriptor nicht über die Roots-Bash-Instanz zugänglich ist. Es muss auf demselben Benutzer ausgeführt werden, der die virtuelle Datei lesen muss, und muss daher als eigener Befehl in der Shell des Root-Benutzers gesendet werden.
Das Drehbuch ist von mir, es ist sicher. Liebte den Einzeiler, aber es hat einige interaktive Zeilen, die nicht liefen. Keine Ahnung warum?
Wenn dpkg ausgeführt wird, das von apt-get aufgerufen wird, wird stdin gelöscht. Wenn Sie einen Befehl wie verwenden curl blah | bash
, senden Sie den Inhalt der Seite im Grunde genommen über STDIN an bash. Wenn einer Ihrer Befehle apt-get ist und ausgeführt wird, wird alles andere gelöscht.
Der Trick besteht darin, einen Befehl wie diesen zu verwenden apt-get install --yes denyhosts </dev/null
. Dies gibt apt-get eine andere Eingabe und löscht einfach / dev / null anstelle des Restes Ihres Skripts.
Wenn Sie ein vollständiges Beispiel für die Installation über ein Remote-Skript anzeigen möchten, können Sie sich dieses Skript zum Einrichten von Denyhosts ansehen
Für die Aufzeichnung, ich bevorzuge Curl gegenüber Wget, aber Wget sollte auch in Ordnung sein.
All diesen Beispielen fehlt ein ziemlich wichtiger Punkt. Wenn Sie die URL verwenden http://dl.dropbox.com/u/11210438/flockonus-stack.sh
, müssen Sie das Skript bei jedem Download überprüfen, da es von jedem im Netzwerkpfad zwischen Ihnen und Dropbox geändert werden kann. Wenn Sie zu http s : //dl.dropbox.com/u/11210438/flockonus-stack.sh wechseln, haben Sie diese Quelle der Unsicherheit nicht.
(Dropbox versucht, die http-URL zu https umzuleiten, aber im Falle eines Netzwerkangriffs würde wget niemals mit der realen Dropbox sprechen und würde die Umleitung niemals sehen.)
Laden Sie es einfach so herunter, wie Sie es mit wget angegeben haben, und führen Sie es dann direkt aus. Sie können einfallsreiche Variablen für das Skript verwenden, das Sie herunterladen möchten usw., aber dies wird den Trick tun
Beispielsweise:
!#/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
könnte genauso gut seinrm -rf /
.