Automatizar tarefa no terminal

#1

Galera estou precisando de ajuda dos masters daqui.
Uso Oracle no Docker para fins de estudo e sempre que vou usa-lo tenho de digitar a seguinte sequência de comandos em modo root no terminal:
1º: docker attach oracle
2º: su - oracle
3º: lsnrctl
4º: start
5º: exit
6º: sqlplus / as sysdba
7º: startup
Preciso criar uma aplicação/rotina que automatize isso de alguma forma.
Alguém tem sugestão de como fazer isso de uma maneira simples e prática?

2 Likes

#2

Se você quer rodar isso manualmente, porém com um comando, você pode usar um alias no bash ou um script em shell. Agora, se você quer rodar ele de tempos em tempos, podemos usar o cron para agendar. Se precisa que isso rode como um serviço, dá para usar o systemd. Enfim, qual é sua necessidade mais detalhada?

1 Like

#3

O que melhor se adequa seria o primeiro caso, alias ou script em shell.
Sabe se o fato dos comando demandarem um tempo para serem executados ex: entre o 3º e 4º demora +/- 2s, 6º e 7º mais uns 2s faz alguma diferença na escolha dessa opção ?

0 Likes

#4

Não tem problema nenhum, seu terminal vai ficar parado esperando as respostas.

Primeiro você precisa construir um comando único para rodar dentro de um alias. Você pode usar o operador && para encadear os comandos. Fica assim:

docker attach oracle && su - oracle && ...

Faz um teste rodando tudo de uma vez, se tudo funcionar certinho, podemos avançar.

Procure um arquivo na sua /home/seu-usuario chamado .bashrc, é nele que vamos criar o alias. Você pode abrir no terminal ou no próprio gestor de arquivos (basta mostrar os arquivos ocultos). Nele você vai escrever no fim do arquivo:

alias seu-comando = 'seu comando'

Aí toda vez que vive escrever seu-comando no terminal, ele vai executar o comando ente aspas, que será o comando único que montamos antes.

Para aplicar as mudanças, salve o arquivo e digite no terminal:

source ~/.bashrc
0 Likes

#5

Com alias não tá indo, mesmo encadeando com o operador &&, é como se ele não conseguisse atingir o container docker. Será que com shell o resultado seria diferente ?

0 Likes

#6

Encadeando com o && e rodando o comando inteiro está indo ok? Qual o output de quando você roda com o Alias? Qual sua distro?

Estranho não funcionar!

0 Likes

#7

Para executar todos estes comandos é bem simples:

1 - Crie um arquivo no terminal com:
nano nome_do_arquivo

2 - Dentro do arquivo digite:

sudo docker attach oracle
su - oracle
sudo lsnrctl
sudo start
sudo exit
sudo sqlplus / as sysdba
sudo startup

3 - Salve e feche o arquivo, não se esqueça depois disso, de dar permissão de execução para o arquivo com, chmod +x nome_do_arquivo

4 - digite no terminal “./nome_do_arquivo” coloque a senha do seu root, e pronto!

Tente isso e veja se resolve!!

1 Like

#8

Fiz o script e cheguei nisso, no caso apenas no primeiro nível do comando, tenho a impressão que por algum motivo o Docker não aceita os demais comandos da instrução.
De qualquer forma vou continuar pesquisando e obrigado pela ajuda galera.

1 Like