向 Brocade 交换机发送交互式分区命令

Bas*_*sil 5 unix ssh storage-area-network brocade

我有一台 Brocade FC 交换机,我想对其进行一些分区。我有一个包含太多行的构建文件,无法复制粘贴到正常的交互式会话中,并且我在交换机和我的 unix 管理服务器之间使用预共享密钥设置了 ssh。我没有期望并且更愿意坚持直接使用 ssh 和 bash。

我试过单独发送命令,但是它失败了,因为每个 ssh 命令都是一个单独的会话,并且一旦会话被删除,所有未提交的命令就会被刷新。

我试过这个:

cat testbuildfile | ssh -tt user@switch
Run Code Online (Sandbox Code Playgroud)

它几乎可以工作,因为它运行我的构建文件中的所有命令,但是它让我在 Brocade 上有一个会话,当它们完成时我无法使用。我有 Brocade 命令提示符,但是如果我输入任何内容,它就会挂起,我必须按 ctrl-c 才能返回到我的 unix 服务器。

我知道我可以将提交命令放入我的构建文件中,但我宁愿有机会在提交之前检查和验证工作。理想情况下,我希望它运行我的命令文件,然后让我登录到它启动的会话中以供我检查,然后手动提交命令。我可以这样做吗?

编辑:如果没有会导致保修失效的提升外壳,则无法在 Brocade 交换机上运行脚本。

Mik*_*eyB 3

正确 - 您已经在 ssh 会话中劫持了 stdin,并且它不再连接到您的终端。除非您添加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
Run Code Online (Sandbox Code Playgroud)