首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过Tacacs+登录Cisco设备的配置注释

通过Tacacs+登录Cisco设备的配置注释
EN

Network Engineering用户
提问于 2018-11-28 03:00:38
回答 1查看 156关注 0票数 3

我正在我们的网络中实现Tacacs+。这是一个很好的工具,我可以用它来帮助我了解我们的网络中引入了什么地方和什么时候的变化。虽然这很好,但我想实现一个额外的特性--能够捕获命令中的注释。我知道思科设备无法保存注释,但是有什么方法可以从用户那里获取自定义的输入,例如"!“然后用Tacacs+记录它们吗?

EN

回答 1

Network Engineering用户

回答已采纳

发布于 2018-11-28 10:03:51

有两种方法:一种是在哪里放置注释的技巧,另一种是syslog+git方法来管理我的客户端使用的配置。

Method 1: ACL,注释

我相信没有办法直接将评论放在Cisco配置中,所以我承认我滥用了ACL:

代码语言:javascript
复制
ip access-list extended CHANGELOG
 remark 2018-01-01: did task one with champagne
 remark 2018-02-14: did task two with roses

因此,当您完成一个新任务时,只需添加另一个注释即可。

代码语言:javascript
复制
ip access-list extended CHANGELOG
 remark 2018-03-01: did task three

您希望登录TACACS+ (可能是一条记帐消息);大多数情况下,我直接将日志发送到syslog,但是如果您愿意,发送TACACS+数据包非常容易,而不是syslog。(使用tacacs_client程序以及logger进行测试。)我只是建议,在这种情况下,日志系统比会计系统更好,但也许你有自己的理由。您可以将所有登录登录到syslog (login on-success log)中,如果您有一个很好的TACACS+设置,还可以考虑完整的命令记帐。(谢谢@cown的聊天技巧。)

如果在路由器上启用了syslog,则可以使用syslog消息触发副本,或者手动执行,或者使用Unix cron或类似的方法执行。

当您将信任撤回到服务器时,您将得到一条更改行:

代码语言:javascript
复制
! Last configuration change at 09:22:29 UTC Wed Nov 28 2018 by jonathanjo

通常,我使用scp (需要ip scp server enable)复制并使用键(需要ip ssh pubkey-chain),因此它是可脚本的,并且将从cron运行。

在ACL CHANGELOG (一行awk脚本)中编写一些脚本以放弃未更改的配置并找到最后一行是非常容易的事情。然后,您可以随意管理它们:只需在syslog中记录是谁做的,以及syslog中的最后一行变更日志(通过logger),或者将它们保存在目录中,或者使用git,或者在syslog中写入(difflogger)。我的一些客户喜欢在git中透露经过修改的密码,所以我们对此进行了预处理。

如果您的环境由于任何原因不支持这样的管理脚本,那么有许多商业包基本上都会做同样的事情,但是您可能会有很多膨胀,并且会失去很多简单性。

Method 2: SSH和服务器端命令

这个怎么样:

代码语言:javascript
复制
R1#ssh loghost "logger did a task" 

将ssh发送到服务器并运行一个在syslog中放置某些内容的命令。在您的示例中,运行一些登录到TACACS+的命令。

代码语言:javascript
复制
Nov 28 10:20:29 R1 jonathanjo: did a task

如果您在登录时编写了一个合适的脚本,您可以只执行以下操作:

代码语言:javascript
复制
R1#ssh routerbosshost

登录脚本可以询问您做了什么,并将其记录下来。

或者,要获得更高级别的管理:查看登录来自何处,从该路由器运行配置scp,运行适当的git commit,然后询问您做了什么并保存它。

任务的核心部分(无错误检查等)仅仅是几行Bourne脚本,客户端运行在一个专用于此的“路由器老板”Unix主机上。他们有一个具有SSH密钥的routerbak用户,因此他们可以从路由器获得自动备份等。这与每一个登录日志相结合,实际上证明了每次让管理员真正做到这一点是很神奇的。

代码语言:javascript
复制
host=${SSH_CONNECTION%% *}  # gets IP address of ssh client
scp -i ~/.ssh/key routerbak@$host:running-config TMP
hostname=$( awk '($1 == "hostname") {print $2; exit;}' TMP )
mv TMP $hostname.config 
git add $hostname.config
git commit || exit  # 'nothing to commit' exits here
gitmsg=$( git log -1 --oneline )
logger -t routerbak "$USER updated $hostname.config ($gitmsg)"

它提供了如下所示的系统日志(稍作编辑以便于阅读):

代码语言:javascript
复制
Nov 29 11:32:03 192.168.0.1 
  1423: %SEC_LOGIN-5-LOGIN_SUCCESS: Login Success
  [user: jonathanjo] [Source: 192.168.0.210] ...
Nov 29 11:32:10 192.168.0.1 1424: 
  %SYS-5-CONFIG_I: Configured from console by jonathanjo on vty1 (192.168.0.210)
Nov 29 11:32:56 192.168.0.1 1425:
  %SEC_LOGIN-5-LOGIN_SUCCESS: Login Success
  [user: routerbak] [Source: 192.168.0.32] ...
Nov 29 11:33:11 routerboss routerbak: 
  jonathanjo updated gwdev.config (9b074fd Fixed ACL for new dev room)

这表明我从笔记本电脑.210登录到了gwdev .1,更改了配置,登录到了路由器老板.32,并执行了备份和git。显然,对于git中的所有内容,您都知道所做的事情,以及消息和git日志。

代码语言:javascript
复制
2018-11-29 11:32:58 jonathanjo 9b074fd Fixed ACL for new dev room
2018-11-29 11:01:51 jonathanjo fbbd535 Finally fixed PPP fragmentation
2018-11-29 11:00:34 jonathanjo f0daa25 Fixed ACL which broken on ISP change
票数 3
EN
页面原文内容由Network Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://networkengineering.stackexchange.com/questions/55045

复制
相关文章

相似问题

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