Wie kann ich Befehle reproduzieren, die auf einem Computer auf einem anderen Computer ausgeführt werden?


8

Ich möchte eine Software auf einem Linux-Computer installieren, den ich in VirtualBox ausgeführt habe. Dann möchte ich das gleiche auf einem Linux-VPS machen.

Ich denke, dass ich alle Befehle speichern kann, die ich mit dem historyBefehl ausführe . Gibt es eine Möglichkeit, diese Befehle auf einem anderen Computer auszuführen? Oder wie macht man solche Dinge?

Antworten:


5

Nun, ich stelle mir hier zwei Situationen vor:

  1. Wenn ich eine kleine Anzahl von Befehlen ausführen muss, würde ich sie einfach auf einem anderen Computer erneut ausführen (mit einer kleinen Anzahl meine ich weniger als 10).

  2. Wenn ich viele Befehle ausführen muss, würde ich sie in ein Bash-Skript einfügen und das Skript auf allen anderen Computern ausführen. Das Skript sollte folgendermaßen aussehen:

    #!/bin/bash
    command 1
    command 2
    command 3
    command 4

Wenn Sie sich über das Ergebnis einiger Befehle nicht sicher sind, können Sie die Befehle durch trennen. Dies &&bedeutet, dass der nächste Befehl nur ausgeführt wird, wenn der vorherige erfolgreich war. command1 && command2bedeutet, dass Befehl2 nicht ausgeführt wird, wenn Befehl1 fehlschlägt.


Danke für eine tolle Antwort. Ich werde PHP + Nginx + PostgreSQL einrichten, also denke ich, dass die Skriptlösung der richtige Weg ist.
Jonas

Hängt davon ab, wie viel Sie bereits wissen und wie oft Sie diesen Prozess duplizieren möchten. (Obwohl es nicht automatisiert ist, besteht der gründlichste Ansatz für ein oder zwei Mal wahrscheinlich darin, ein großes Dokument mit Arbeitscode-Schnipsel und Gedanken und Notizen zum Einrichtungsvorgang aufzubewahren, auf das Sie später verweisen können ...) Sobald Sie Wenn Sie wissen, wie alles funktioniert, sollten Sie auf jeden Fall ein großes Bash- oder Puppet-Skript oder was auch immer schreiben.
Kevin Cantu


3

Patkos hat recht, wahrscheinlich ist es am besten, ein Skript zu erstellen. Dafür müssen Sie jedoch manchmal experimentieren, bis Sie es richtig verstanden haben und ein Protokoll darüber benötigen, was Sie getan haben und was das Ergebnis war. Hier ist das Tool scriptnützlich.

Es erstellt eine Aufzeichnung aller Aktivitäten in dem Terminal, in dem es ausgeführt wird:

Script erstellt ein Typoskript für alles, was auf Ihrem Terminal gedruckt ist. Dies ist nützlich für Schüler, die eine Hardcopy-Aufzeichnung einer interaktiven Sitzung als Nachweis einer Aufgabe benötigen, da die Typoskriptdatei später mit lpr (1) ausgedruckt werden kann.


Danke, ich werde mehr darüber erfahren. Es sieht interessant aus.
Jonas

Wie wäre es, wenn Sie alles auf einem Computer ausführen, dann die Verlaufsdatei überprüfen (z. B. ~ / .bash_history auf Bash oder ~ / .histfile auf zsh) und möglicherweise etwas kopieren?
Phunehehe

Der Verlauf wird wahrscheinlich auf die letzten 100 Befehle oder eine andere beliebige Größenbeschränkung gekürzt, sodass Sie dies überprüfen müssen.
Kevin Cantu


2

Ich habe ein Open-Source-Tool namens Overcast erstellt , um dies zu vereinfachen.

Sie können Virtualbox-Maschinen lokal (verwendet Vagrant unter der Haube) oder auf einer Reihe verschiedener Cloud-Anbieter hochfahren und dann alle Befehle oder Skriptdateien für alle ausführen:

# Spin up Ubuntu 14.04 instances on Virtualbox, DigitalOcean, and Linode:
overcast virtualbox create vm.01
overcast digitalocean create vm.02
overcast linode create vm.03
# Run an arbitrary sequence of commands and scripts across all of them:
overcast run vm.* uptime "free -m" ./path/to/my-script.sh

Schöne Dokumentation!

1

Wenn Sie die Befehle zuerst interaktiv auf einem Computer ausführen und dann über ein Skript verfügen möchten, um sie auf anderen Computern auszuführen, öffnen Sie einfach Ihre .bash_history (oder was auch immer Ihre Shell verwendet) in einem Texteditor und entfernen Sie alle Fehler, die Sie beim ersten Mal gemacht haben um. Voila! Sie haben ein Skript, das Sie auf die anderen Computer kopieren können (mit scp, rsync, was auch immer).

In einigen Fällen müssen Sie die Datei möglicherweise zuerst leicht verarbeiten. Zum Beispiel verwende ich zsh und habe es so konfiguriert, dass verschiedene Metadaten (Datenstempel) hinzugefügt werden. Natürlich müssten Sie dies entfernen. Sie können dies problemlos in vim oder TextMate oder wahrscheinlich in einem anständigen Editor mithilfe der Blockauswahl tun. Oder Sie können awk oder cut verwenden, um alles außer den Metadaten auszugeben. Hier ist eine Möglichkeit, dies zu tun:

cat .zhistory | cut -d';' -f2- 

In den meisten Fällen handelt es sich bei Ihrer Verlaufsdatei jedoch nur um eine direkte Liste von Befehlen, sodass Sie sich wahrscheinlich nicht um diese Massagen kümmern müssen.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.