如何在Cisco CSR用户数据中实现banner多行换行?
问题场景
我用以下格式配置IOS设备的Banner:
ios-config-0001="hostname test-csr-deployment-001" ios-config-0002="banner exec |Hostname: test-csr-deployment-001\r\nRegion: eu-west-2|"
执行show banner exec命令后,换行符未生效,输出如下:
show banner exec Hostname: test-csr-deployment-001rnRegion: eu-west-2
尝试过的无效方案
我试过几种方式都没能实现预期的多行效果:
使用八进制转义字符:
ios-config-0002="banner exec |Hostname: test-csr-deployment-001\015\012Region: eu-west-2|"输出结果:
Hostname: test-csr-deployment-001015012Region: eu-west-2定义变量拼接换行符:
ios-config-000x="set NEWL "\0"" ios-config-000x="set NEWL1 "12"" ios-config-000x="set NEWL $NEWL$NEWL1" ios-config-000x="banner exec |Hostname: test-csr-deployment-001$NEWLRegion: eu-west-2|"报错信息:
Invalid input detected at '^' marker输出结果:
Hostname: test-csr-deployment-001$NEWLRegion: eu-west-2拆分配置为多行:
ios-config-0002="banner exec |Hostname: test-csr-deployment-001" ios-config-0003="Region: eu-west-2|"报错信息:
Invalid input detected at '^' marker输出结果:
Hostname: test-csr-deployment-001
另外尝试过双重转义,但配置直接加载失败。
预期输出
希望执行show banner exec后得到如下结果:
show banner exec Hostname: test-csr-deployment-001 Region: eu-west-2
有效解决办法
方案1:双重转义换行符
如果是通过配置文件或自动化工具传递配置,对换行符进行双重转义,让工具先解析一次转义,将\\n转换为IOS能识别的\n换行符:
ios-config-0002="banner exec |Hostname: test-csr-deployment-001\\nRegion: eu-west-2|"
方案2:直接插入实际换行
如果工具支持多行字符串配置,直接在Banner内容中插入实际换行(不是转义字符):
ios-config-0002="banner exec |Hostname: test-csr-deployment-001 Region: eu-west-2|"
方案3:模拟终端交互输入
如果是通过脚本模拟终端配置,在输入Banner内容时,每输入一行后发送实际的回车换行指令(\r\n),最后输入结束符(比如|)完成配置。
原理说明
IOS的Banner配置需要实际的ASCII控制字符(换行符0x0A或回车+换行0x0D0A)才能实现多行显示。之前的问题是转义字符未被正确解析,被当作普通字符串传递给IOS,导致显示为rn、015012这类无效字符。确保转义字符在传递到IOS前被解析为对应的控制字符,就能实现预期的多行效果。
内容的提问来源于stack exchange,提问作者itChi
相关产品推荐
相关产品推荐

