あるマシンで実行されたコマンドを別のマシンで再現するにはどうすればよいですか?


8

VirtualBoxで実行したlinux-machineにソフトウェアをインストールしたいのですが。次に、linux-VPSでも同じことを行います。

コマンドを使用して実行するすべてのコマンドを保存できると思いますhistory。これらのコマンドを別のマシンで実行する方法はありますか?またはそのようなことをする方法は何ですか?

回答:


5

さて、私はここで2つの状況を想像します:

  1. 少数のコマンドを実行する必要がある場合は、他のマシンで再度実行するだけです(少数というのは、10未満という意味です)。

  2. 多くのコマンドを実行する必要がある場合は、それらをbashスクリプトに入れて、他のすべてのマシンでスクリプトを実行します。スクリプトは次のようになります。

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

一部のコマンドの結果が不明な場合は、コマンドを&&で区切ることができます。つまり、前のコマンドが成功した場合にのみ次のコマンドが実行されます。command1 && command2つまり、command1が失敗した場合、command2は実行されません。


すばらしい答えをありがとう。PHP + Nginx + PostgreSQLをセットアップするので、スクリプトソリューションが適切な方法だと思います。
Jonas

すでにどのように行うかを知っている量と、このプロセスを複製する予定の回数によって異なります。(自動化されていませんが、1度か2度の場合の最も徹底的なアプローチは、作業中のコードスニペットと、後で参照できるセットアップ手順に関する考えとメモを含む大きなドキュメントを保持することです)。すべてがどのように機能するかを知っているなら、大きなBashやPuppetスクリプトなどを間違いなく書く必要があります。
Kevin Cantu


3

Patkosは正解です。おそらくスクリプトを作成するのが最善です。ただし、これについては、正しくなるまで実験し、何をしたか、何が結果だったかのログが必要になる場合があります。ここではツールscriptが便利です。

実行しているターミナルでのすべてのアクティビティの記録を作成します。

スクリプトは、端末に出力されるすべてのタイプスクリプトを作成します。後でlpr(1)を使用してtypescriptファイルを印刷できるので、インタラクティブセッションのハードコピーレコードが課題の証明として必要な学生に役立ちます。


ありがとう、それについてもっと学びます。面白いですね。
Jonas

1台のマシンですべてを実行してから、履歴ファイル(bashの場合は〜/ .bash_history、zshの場合は〜/ .histfileなど)を確認し、コピーしてください。
phunehehe

履歴はおそらく最後の100コマンドまたはその他の任意のサイズ制限に切り詰められているため、確認する必要があります。
Kevin Cantu


2

この種のことを簡単にするために、Overcastというオープンソースツールを作成しました。

Virtualboxマシンをローカルで(フードの下でVagrantを使用して)スピンアップしたり、さまざまなクラウドプロバイダー上でスピンアップしたり、それらすべてでコマンドやスクリプトファイルを実行したりできます。

# 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

素敵なドキュメント!

1

最初にコマンドを1つのマシンで対話的に実行し、次にスクリプトを他のマシンで実行する場合は、テキストエディターで.bash_history(またはシェルが使用するもの)を開き、最初に行った間違いをすべて削除します。周り。出来上がり!他のマシンにコピーできるスクリプトがあります(scp、rsyncなど)。

場合によっては、最初にファイルを少し処理する必要があります。たとえば、zshを使用して、さまざまなメタデータ(日付スタンプ)を追加するように構成しています。明らかに、これを削除する必要があります。これは、vimやTextMate、またはおそらくブロック選択を使用した適切なエディターで簡単に実行できます。または、awkまたはcutを使用して、メタデータ以外のすべてを出力できます。これを行う1つの方法を次に示します。

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

しかし、ほとんどの場合、履歴ファイルはコマンドの単なるリストであるため、このようなマッサージについて心配する必要はありません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.