Отправить интерактивные команды зонирования на коммутатор 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