É possível automatizar uma configuração de host compartilhado usando o script shell bash?

É possível automatizar uma configuração de host compartilhado usando o script shell bash?

Preâmbulo: Nunca criei um script shell bash antes. Então, e antes de mais nada, nem tenho certeza se esta É a ferramenta certa para o trabalho. Se não for, por favor, e antes de tudo, diga-me qual é, na sua opinião, a melhor alternativa.

Contexto: Costumo realizar tarefas repetitivas sempre que tento configurar um site. Desejo automatizar essas tarefas executando um ou dois comandos. ATUALIZAÇÃO: O host compartilhado é baseado em Unix. As máquinas locais são Mac OS X, também baseadas em Unix.

Por exemplo, aqui estão algumas das tarefas (comandos) que executo com frequência:

SCP:

scp ~/local/path/general_web_app/.bash_profile [email protected]:/home/HOSTNAME/.bash_profile

scp ~/local/path/general_web_app/.gitconfig [email protected]:/home/HOSTNAME/.gitconfig

SSH diretamente:

ssh [email protected] 
cd /www/www/
git init
git add .
git commit -a -m "first commit"
cd ~/private/ && mkdir repos

EDITAR, ENCONTRAR, SUBSTITUIR, SALVAR E SAIR:

pico ~/remote/private/repos/general_hub.git/hooks/post-update
replace "user" WITH "hostname";
hit "cmd x"
hit "y"

AFAIK: Esses são os diferentes tipos de tarefas que desejo que o script execute.

Questão 1: O script bash pode manipular SCP, SSH diretamente e EDIT FIND REPLACE SAVE AND EXIT?

Questão 2: Alguns parâmetros devem ser solicitados ao usuário que executa o script, e esses parâmetros devem ser usados ​​para serem colocados dentro de alguns arquivos (substituindo palavras-chave específicas existentes) - isso pode ser feito?

Questão 3: Devemos copiar os arquivos para o controle remoto e editar diretamente no controle remoto ou devemos pegar os arquivos localmente, "editá-los localmente em um local temporário" e, em seguida, colocá-los no servidor? Presumo que o segundo seja muito mais complicado.

Algum exemplo que eu possa ver?

Muito obrigado antecipadamente

Responder1

A resposta curta é: sim para todos.

Vou te dar alguns exemplos. A seguir está um exemplo de comando que executa um script bash local em uma máquina remota: observe que não é necessário copiá-lo remotamente:

   ssh user@remote_pc 'bash -s' < local_file.sh

Isso é tão simples que pode não merecer escrever um script inteiro para lidar com isso, mas se você desejar, também pode ser organizado por meio de um script. Para que isso funcione, você terá que configurar passwordless loginconexões ssh. Caso contrário, os comandos ssh/scp dentro do script serão interrompidos enquanto aguardam que você insira a senha do usuário remoto.

Quanto à edição e assim por diante, o Unix possui o editor de fluxo definitivo sed, que faz exatamente isso: por exemplo, o comando

 sed 's/a/A/g' old_file.txt > new_file.txt

substitui minúsculas apor maiúsculas Ae coloca a saída em um novo arquivo. Isso também pode ser facilmente programado.

Quanto aos parâmetros, o shell script pode ler parâmetros de um arquivo ou pode consultar o ambiente em busca de alguns parâmetros. Não há necessidade de pedir ao usuário seu nome de login,

  echo $USER
  whoami

fará isso, mesmo dentro do script. A mesma coisa para um endereço residencial, echo $HOMEe assim por diante.

Quanto à sua terceira pergunta, espero que minha primeira resposta também responda: o primeiro comando permite que você execute um arquivo de script, que você editou localmente, em um servidor remoto, sem precisar copiá-lo para lá.

Bem-vindo ao mundo de *Nix, ondeseu desejo é uma ordem.

Desculpe, esqueci: este comando

  export -p | more

exibirá todas as variáveis ​​locais que estão disponíveis em todos os lugares (tecnicamente, que foram exportado).

informação relacionada