Como usar dois comandos ssh no mesmo script e depois continuar executando outros comandos?

0

Para fazer login no meu banco de dados, as etapas a seguir sempre seguem:

ssh [email protected] 
password: 

Quando estou conectado, faço login em um servidor de banco de dados local no mesmo terminal:

ssh database_name 
password:

Então eu faço um su como:

su - appuser

E depois eu faço a conexão com o sqlplus:

sqlplus ..

Estou tentando automatizar isso usando um script unix, mas não consigo descobrir o seguinte:

  1. como eu uso 2 SSH no mesmo script
  2. Eu poderia ir tão longe quanto "ssh database_name" e digitar a senha, mas o controle retornará ao terminal e o restante do script não será executado
  3. Eu entendo que após o segundo ssh eu tenho que passar o resto dos comandos, começando com o comando su como parâmetro; mas eu não sei fazer o mesmo.
por user1741642 08.03.2016 / 18:00

2 respostas

0

Minha abordagem para isso seria dupla. Um, configure o login com chave sem senha para SSH via ssh-keygen , como @Avinash menciona em um comentário. Segundo, use expect para percorrer as duas sessões SSH e o lançamento de sqlplus e, em seguida, retorne o controle para o terminal.

    
por 08.03.2016 / 18:07
0

Algo parecido com isto, mais autenticação do pubkey sem senha deve fazer o truque:

# create an ssh connection for tunneling only, in the background (this assumes tunneling is allowed... usually is)
ssh -N -L 9999:database_name:22 [email protected] &
pid=$!

# connect to the 2nd machine directly, using the tunnel, also run only the sqlplus command. (this assumes sudo is installed)
ssh -oPort 9999 localhost sudo -u appuser sqlplus ..

kill $pid

O primeiro comando pode ser substituído por uma configuração especial em ~ / .ssh / config. Aqui está um exemplo:

Host mytunnel
    User unix_id
    Hostname something.com
    LocalForward 9999 localhost:22

Host sqlviatunnel
    User unix_id
    Hostname localhost
    Port 9999
    ProxyCommand ssh -q -W %h:%p mytunnel

e depois

ssh sqlviatunnel

Renomeie sqlviatunnel para algo menor.

    
por 08.03.2016 / 23:00

Tags