首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用shell脚本验证设备配置

使用shell脚本验证设备配置
EN

Stack Overflow用户
提问于 2019-05-04 17:13:34
回答 1查看 34关注 0票数 0

假设standard.txt是标准配置

config.txt是我想要验证的配置

这两种配置都包含相似的设置,但是配置排列或格式可能会略有不同。

代码语言:javascript
复制
user@pc:~/$ more standard.txt config.txt 
::::::::::::::
standard.txt
::::::::::::::
ASA-A# show run dns
dns domain-lookup outside
DNS server-group DefaultDNS
    name-server 172.16.51.30 inside
    name-server 8.8.8.8 outside
    name-server 172.16.54.30
    domain-name domain.com
::::::::::::::
config.txt
::::::::::::::
ASA-A# show run dns
dns domain-lookup outside
DNS server-group DefaultDNS
    name-server 172.16.51.30 inside
name-server 172.16.54.30
name-server 8.8.8.8 outside
domain-name domain.com
user@pc:~/$ 

diff将无法验证它,因为它还将检查格式。

代码语言:javascript
复制
user@pc:~/$ diff standard.txt config.txt 
5,7c5,7
<     name-server 8.8.8.8 outside
<     name-server 172.16.54.30
<     domain-name domain.com
---
> name-server 172.16.54.30
> name-server 8.8.8.8 outside
> domain-name domain.com
user@pc:~/$ 

有没有更好的方法来解决这个问题?

EN

回答 1

Stack Overflow用户

发布于 2019-05-04 17:23:53

也许是这样的。它非常简陋,可以根据您的需要进行更改:

代码语言:javascript
复制
$ awk '               # using awk
{ $1=$1 }             # rebuild records for space control
NR==FNR {             # process file1
    a[$0]             # hash record to a (add counting if multiple identical records)
    next
}
{                     # process file2
    if($0 in a)       # if matching record in file1
        delete a[$0]  # remove from a
    else              # if not found in a
        print"2:",$0  # output record
}
END {                 # in the END
    for(i in a)       # output all records from file1 which had no match
        print "1:",i  # ... in file2
}' file1 file2

在我稍微更改了字节之后的输出(好吧,file1 :):

代码语言:javascript
复制
2: ASA-A# show run dns
1: ASA-A# show run dnsp
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55981091

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档