Como posso reproduzir comandos em uma máquina em outra máquina?

8

Eu gostaria de instalar algum software em uma máquina Linux que executei no VirtualBox. Então eu gostaria de fazer a mesma coisa em um VPS do Linux.

Acho que posso salvar todos os comandos que eu executo usando o comando history . Existe alguma maneira que eu poderia executar esses comandos em outra máquina? Ou qual é a maneira de fazer essas coisas?

    
por Jonas 18.10.2010 / 12:09

6 respostas

5

Bem, imagino 2 situações aqui:

  1. Se eu precisar executar um pequeno número de comandos, eu os executaria novamente em qualquer outra máquina (por pequeno número, quero dizer menos que 10)

  2. Se eu precisar executar muitos comandos, eu os colocaria em um script bash e executaria o script em todas as outras máquinas. O script deve ficar assim:

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

Se você não tiver certeza sobre o resultado de alguns comandos, poderá separar os comandos por && , o que significa que o próximo comando será executado somente se o anterior tiver sido bem-sucedido. command1 && command2 significa que o comando2 não será executado se o comando1 falhar.

    
por 18.10.2010 / 12:17
5

Existem várias ferramentas que permitem efetuar login e executar séries de comandos em várias máquinas ao mesmo tempo. Aqui está um casal:

por 10.06.2011 / 10:00
3

Patkos está certo, provavelmente é melhor criar um script. No entanto, para isso, às vezes você tem que experimentar até que você acerte e precise de um registro do que você fez e qual foi o resultado. Aqui a ferramenta script é útil.

Cria um registro de todas as atividades no terminal em que está sendo executado:

Script makes a typescript of everything printed on your terminal. It is useful for students who need a hardcopy record of an interactive session as proof of an assignment, as the typescript file can be printed out later with lpr(1).

    
por 18.10.2010 / 13:01
2

link < --- Bom substituto para os scripts, pois pode tomar providências se uma etapa falhar

    
por 18.10.2010 / 13:31
2

Eu criei uma ferramenta de código aberto chamada Overcast para facilitar esse tipo de coisa.

Você pode girar as máquinas do Virtualbox localmente (usa o Vagrant sob o capô) ou em vários provedores de nuvem diferentes e, em seguida, executar qualquer comando ou arquivo de script em todos eles:

# 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
    
por 23.05.2014 / 04:30
1

Se você quiser primeiro executar os comandos interativamente em uma máquina e depois ter um script para executá-los em outros, basta abrir sua .bash_history (ou qualquer que seja o seu shell) em um editor de texto e remover quaisquer erros que você cometeu a primeira vez. Voila! Você tem um script que pode ser copiado para as outras máquinas (com scp, rsync, o que for).

Em alguns casos, você pode ter que processar o arquivo primeiro. Por exemplo, eu uso zsh e configuro para adicionar vários metadados (datestamps). Obviamente você precisaria remover isso. Você pode facilmente fazer isso no vim ou TextMate, ou provavelmente qualquer editor decente usando a seleção de blocos. Ou você pode usar o awk ou o cut para produzir tudo, menos os metadados. Aqui está uma maneira de fazer isso:

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

Mas a maior parte do tempo você verá que seu arquivo de histórico é apenas uma lista de comandos, então você provavelmente não precisará se preocupar com nada disso.

    
por 09.06.2011 / 21:07