Envie comandos interativos de zoneamento para o comutador Brocade

5

Eu tenho um switch do Brocade FC que eu gostaria de fazer um zoneamento. Eu tenho um arquivo de compilação com muitas linhas para copiar e colar em uma sessão interativa normal, e eu tenho o ssh configurado com chaves pré-compartilhadas entre o switch e meu servidor de gerenciamento unix. Eu não tenho esperas e prefiro ficar com o ssh e o bash.

Eu tentei enviar os comandos individualmente, no entanto, ele falha porque cada comando ssh é uma sessão individual e todos os comandos não confirmados são liberados assim que a sessão é descartada.

Eu tentei isso:

cat testbuildfile | ssh -tt user@switch

Quase funciona, pois ele executa todos os comandos no meu arquivo de compilação, no entanto, ele me deixa com uma sessão no Brocade que não posso usar quando eles terminarem. Eu tenho o meu prompt de comando Brocade, mas se eu digitar qualquer coisa, ele trava e eu tenho que ctrl-c para voltar ao meu servidor unix.

Eu sei que posso colocar o comando commit no meu arquivo de compilação, mas prefiro ter a chance de verificar e validar o trabalho antes de enviá-lo. Idealmente, eu gostaria que ele executasse meu arquivo de comando e depois me deixasse logado na sessão que ele iniciou para eu verificar e, em seguida, confirmar manualmente os comandos. Posso fazer isso?

edit: a execução de scripts nos switches Brocade não é possível sem um shell elevado que anularia a garantia.

    
por Basil 01.07.2014 / 03:34

1 resposta

3

Certo - você sequestrou stdin na sessão ssh e não está mais conectado ao seu terminal. A menos que você adicione quit no fluxo de comando, ele será interrompido.

Tente essa mágica:

#!/bin/bash
host=blch1-sw3
session=$host.$$
CR="$(echo -e '\r')"

screen -d -m -S $session
screen -S $session -p 0 -X zombie kr
screen -S $session -p 0 -X hardstatus alwayslastline
screen -S $session -p 0 -X hardstatus string "$host config change 3.14159"
screen -S $session -p 0 -X stuff "exec ssh -l USERID $host$CR"
sleep 2
screen -S $session -p 0 -X stuff "PASSW0RD$CR"
sleep 5
screen -S $session -p 0 -X stuff "version$CR"
sleep 2
screen -S $session -p 0 -X stuff "# Changes complete - commit or abort$CR"
screen -x $session
    
por 01.07.2014 / 06:35