Vários comandos em sequencia para conexão ssh com a biblioteca Ganymed SSH-2 for Java

2 respostas
M

Colegas, já verifiquei algumas msgs relacionadas ao uso do protocolo SSH em Java nos fóruns do GUJ.
Porém, não encontrei resposta para a minha situação.

Necessito enviar mais de um comando remoto ao mesmo tempo, em sequencia, para roteadores Juniper (na verdade o mesmo vale para eqptos de outras marcas tbém).
O problema ocorre porque ao logar em um roteador, o usuário é conectado em modo Somente Leitura. Significa que um segundo comando é necessário para habilitar o modo Configuração, permitindo a partir daí enviar os demais comandos de escrita. Para que isso funcione, pelo que entendi, a sequencia de comandos precisa ser executada em uma mesma sessão.

Diferentemente de servidores unix/linux, onde as permissões do usuário é que determinam o que pode ser feito imediatamente após sua conexão, em roteadores, mesmo com permissões de administrador, o usuário loga-se sempre no modo Somente Leitura. Ou seja, a interação é obrigatória para chegar até o modo Configuração.

Nos exemplos que busquei, os passos básicos são:

# Estabelecer conexão
# Loop conforme a qtd de comandos
	# Estabelecer sessão
	# Executar comando
	# Encerrar sessão
# Fim do loop
# Encerrar conexão

Minha necessidade seria mais ou menos assim:

# Estabelecer conexão
# Estabelecer sessão
# Loop conforme a qtd de comandos
	# Executar comando
# Fim do loop
# Encerrar sessão
# Encerrar conexão

[size=9]Obs: o loop dos comandos refere-se a uma lista de comandos em um arquivo, sendo um comando por linha[/size]

Verifiquei nas recomendações da biblioteca o uso do método requestPTY() da classe Session para envio de vários comandos em sequencia, entretanto não obtive sucesso.

Alguém poderia me ajudar?

2 Respostas

P

Veja se este projeto pode te ajudar:

http://code.google.com/p/expect4j/

Na mesma página há referência a um outro:

http://code.google.com/p/enchanter/

L

Marcos,

O fórum “Java Programming - How to execute multiple SSH commands using Ganymed” resolve o seu problema.
Caminho: http://forums.sun.com/thread.jspa?threadID=5408717
Veja que o programa abre a conexão SSH, depois abre a sessão SSH e por fim abre um Shell:

[color=blue]conn.connect();sess = conn.openSession();sess.requestPTY(bash);sess.startShell();Enviam-se todos os comandos : writeCommand(comandos + “\n);

OBS. IPMPORTANTE: colocar o \n para o Shell saber que é o fim de linhafecham-se a sessão, conexão e Shell[/color]

Att.,
Leonardo

Criado 8 de março de 2010
Ultima resposta 1 de abr. de 2010
Respostas 2
Participantes 3