Sou um administrador de sistema júnior. O motivo pelo qual estou fazendo esta pergunta é porque não temos um administrador de sistema sênior aqui que seja proficiente em scripts. Os veteranos estão na sede e ocupados demais para algo assim.
Meu cenário é este. Tenho que executar três scripts com frequência para implantar um aplicativo. Os scripts foram feitos por um administrador de sistema sênior. Geralmente as coisas correm bem com eles e sem erros. Mas, eu tenho que cuidar deles para obter informações. :(
Durante partes desses scripts, há partes em que preciso inserir sim ou não. Minhas respostas nunca mudam, a menos que a parte anterior falhe, então seleciono não e aparece 'falha na compilação'.
Existem basicamente estas partes que eu executo:
1 - SSH em um servidor de implantação
2 - edite uma pequena string em um arquivo (que especifica informações específicas do servidor)
3 - execute o script A, que basicamente envia todos os arquivos da implantação para o servidor de destino. A única contribuição que tenho a dar aqui está no final. Ele pergunta se a data correta é mostrada no destino, se eu disser que sim, a construção foi bem-sucedida.
4 - execute o script B também do servidor de implantação, que necessita de algumas informações específicas, por exemplo:
./scriptB XYZ onde as alterações de X, Y, Z dependem das informações do servidor de destino.
O Script B tem algumas perguntas como 'você quer fazer isso ou largar isso', as respostas permanecem as mesmas. Além disso, às vezes há um bug do ANT, então ele quer que eu pressione '1' até que o script continue.
5 - execute o script C, que é muito semelhante ao script B. Porém, em um ponto, ele está prestes a executar uma etapa específica e devo pressionar manualmente 'control c' para sair.
Sou novato em scripts, mas se alguém pudesse me dizer ou me dar uma ideia de como eu poderia fazer isso, seria ótimo. Achei que talvez pudesse usar expect.
Melhor ainda, seria se eu pudesse clicar em algum EXE no meu laptop Windows e ele faria tudo. É mesmo possível?
Responder1
Parece que você deveria observar duas coisas:
- Editar o script antigo para fazer algumas verificações automaticamente (o carimbo de data e hora, por exemplo) ou remover os prompts (procurar
read
comandos) e responder com os padrões. - Usando uma ferramenta projetada exatamente para esta tarefa, comoAnsible.
Se você quiser aprender algo novo e melhorar seu currículo de administrador de sistemas, eu olharia para a segunda opção, embora a primeira deva funcionar bem no curto prazo!
Se você começar com a primeira opção que mencionei, tente fazer com que o Script A não exija um prompt - use a date
função para obter a data atual, talvez, e faça a verificação automaticamente. Se for uma data que você está comparando com os arquivos que acabou de copiar, você poderá usar ferramentas como find
ou ls
para obter essas informações.
Executando o Script C, deveria ser trivial colocar um exit
comando onde você normalmente acertaria CtrlC.
Sobre tudo, lembre-se de testar isso em caixas não críticas! Você não quer vomitar na configuração de produção enquanto hackeia scripts antigos...