Interaja com o “shell” remoto do script de segundo plano via SSH

0

Eu preciso emular o seguinte com um script que é invocado por um serviço da web executado em um servidor Linux:

  • Acessar o servidor remoto do AIX via SSH
  • Faça login em uma instância do Intersystems Cache (se isso não for familiar, finja que estamos carregando um ambiente interativo em Python ou Ruby [irb])
  • Executar comandos
  • Executar mais comandos, dependendo da saída dos comandos anteriores
  • Registrar todas as entradas e saídas deste ambiente

Isso é bastante trivial em C # com a biblioteca SSH.NET. Abra um shellstream para o host remoto, conecte um StreamReader e StreamWriter, em seguida, envie a entrada para a conexão SSH via StreamWriter e leia a saída dele via StreamReader.

Como devo fazer isso em um servidor Linux com ssh? Eu estou experimentando com a tela, mas parece mais projetado para uso humano-interativo do que por scripts, e eu me pergunto se estou latindo na árvore errada.

Eu não tenho controle sobre o que está instalado no servidor AIX. Eu posso conseguir instalar coisas lá, mas sem garantias.

Mais tarde, editar: possíveis soluções incluem pexpect / pxssh (Python), paramiko (também Python)

    
por wilee 25.03.2014 / 16:22

1 resposta

0

Sim, a tela não é o caminho. Eu não sei sobre cache , mas você pode escrever um script para ele ou você precisa do shell interativo? Se você pode escrever um script e salvá-lo na máquina AIX, você deve ser capaz de fazer

ssh [email protected] /path/to/cache_script

Outra abordagem seria usar expect que também está disponível no AIX mas não posso dar mais detalhes sem saber os comandos que você precisa executar. Em qualquer caso, expect permite que você envie comandos e responda a saída, interagindo com um shell interativo de maneira não interativa.

    
por 25.03.2014 / 18:29