Отправить интерактивные команды зонирования на коммутатор Brocade

У меня есть переключатель Brocade FC, на котором я хотел бы провести зонирование. У меня есть файл сборки со слишком большим количеством строк для копирования-вставки в обычный интерактивный сеанс, и у меня есть ssh, настроенный с общими ключами между коммутатором и моим сервером управления Unix. Я не ожидал и предпочел бы придерживаться прямых ssh и bash.

Я попытался отправить команды по отдельности, однако это не удается, потому что каждая команда ssh является отдельным сеансом, и все незафиксированные команды сбрасываются, как только сеанс удаляется.

Я пробовал это:

cat testbuildfile | ssh -tt user@switch

Это почти работает, потому что он запускает все команды в моем файле сборки, однако оставляет сеанс на Brocade, который я не могу использовать, когда они закончены. У меня есть командная строка Brocade, но если я что-то ввожу, она зависает, и мне нужно ctrl-c, чтобы вернуться на мой unix-сервер.

Я знаю, что могу поместить команду commit в мой файл сборки, но я бы предпочел иметь возможность проверить и проверить работу перед ее фиксацией. В идеале я хотел бы, чтобы он запускал мой командный файл, а затем оставлял меня вошедшим в сеанс, который он начал, чтобы я мог проверить, а затем вручную зафиксировать команды. Я могу это сделать?

редактирование: запуск сценариев на коммутаторах Brocade невозможен без расширенной оболочки, которая аннулирует гарантию.

1 ответ

Правильно - вы взломали stdin в сеансе ssh, и он больше не подключен к вашему терминалу. Если вы не добавите quit в командный поток он будет висеть.

Попробуйте эту магию вместо этого:

#!/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
Другие вопросы по тегам