Назад | Перейти на главную страницу

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

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

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

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

cat testbuildfile | ssh -tt user@switch

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

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

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

Правильно - вы захватили 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