如何在Bash脚本中实现Brocade交换机Supportsave命令的自动化?
自动化执行Brocade交换机Supportsave命令的Bash脚本方案
在Bash脚本里处理多交互的命令,核心是按顺序提供每个交互步骤需要的输入,以下是几种实用的实现方式:
方法1:多行输入管道传递
用printf按交互顺序生成输入内容,通过管道直接传给supportsave,每个输入对应一行:
# 按顺序依次提供:确认执行、服务器IP、用户名、密码、协议、远程目录 printf "y\n192.168.1.100\nftpuser\nftppass\nftp\n/support/logs\n" | supportsave
方法2:Here Document( heredoc)
这种方式可读性更强,把所有交互输入按顺序写在分界符之间,直接传递给命令:
supportsave << EOF y 192.168.1.100 ftpuser ftppass ftp /support/logs EOF
注:EOF是自定义分界符,只要前后完全一致即可,中间每行对应一个交互提示的输入项。
方法3:SSH远程执行场景
如果是通过SSH连接交换机执行命令,需要用嵌套的Here Document确保输入正确传递到远程会话:
ssh admin@your_switch_ip << SSH_EOF supportsave << SUPPORTSAVE_EOF y 192.168.1.100 ftpuser ftppass ftp /support/logs SUPPORTSAVE_EOF SSH_EOF
注意事项
- 明文写密码存在安全风险,建议优先用密钥认证(比如SCP/SFTP协议),或者将密码存入环境变量后引用
- 输入顺序必须严格匹配
supportsave的交互提示顺序,不能错位 - 若某个提示有默认值(比如协议默认是ftp),可以留空行直接使用默认选项
内容的提问来源于stack exchange,提问作者Abhinandan Talekar
相关产品推荐
相关产品推荐

