无心睡眠 2007-12-4 19:14
Junos Cookbook中文版第一章第二部分
[font=宋体][size=2][b]Recipe 1.6. 配置的语法核实[/b]
[b]Problem[/b]
核实配置的语法确认没有错误或者丢失的语句。
[b]Solution[/b]
核实配置的语法:
[edit]
aviva@router1# commit check
configuration check succeeds
[edit]
aviva@router1#
[b]Discussion[/b]
配置路由器的时候,如果你输错了JUNOS配置语句或命令,CLI会立即反应并提醒你知道输入正确。然而,这并不能保证你变量名拼写的正确,或者你尚未省略的语句。有时使用commit check命令来检查配置的语法。这个命令只检查语法,不激活配置。
如果没有语法错误,你会看到配置检查成功的信息。
如果在配置中有任何错误,有会一个消息报告错误所在的层次结构和问题的描述。下面的例子说明了一个RIP邻居路由器在两个组里面的不正确配置。
[edit]
aviva@router1# commit check
[edit protocols rip group alpha-rip-group]
'neighbor fe-0/0/0.0'
Failed to configure neighbor fe-0/0/0.0: already in group alpha-rip-group
error: configuration check-out failed
这是个错误,因为一个RIP邻居只能在一个组中。从输出信息中可以看到,错误位于配置层次的[edit protocols rip group alpha-rip-grou]中。
即使配置的语法是正确的,也不能保证配置会向预期的那样工作。
[/size][/font]
[size=4][font=宋体][font=宋体][size=2][b]Recipe 1.7. 激活路由器配置[/b]
[b]Problem[/b]
使用CLI创建或者修改路由器的配置并且想让配置生效。
[b]Solution[/b]
使用下面的命令激活路由器的配置:
[edit]
aviva@router1# commit
commit complete
[edit]
aviva@router1#
[b]Discussion[/b]
当你在路由器上修改配置,你就是在编辑一份路由器配置的拷贝。这份拷贝称为候选配置。你对配置任何改动只是记录在配置的拷贝中,并不会对路由器的操作产生任何要想。当你想要配置生效时,你必须激活,或者提交配置。当你这样做的时候,你的配置文件被检查,以确认没有语法问题。然后才被激活,称为正在运行的配置。
Commit过程是一个批处理模式的操作。当你处于配置模式中,你可以做很多修改,但这些改动只出现在候选配置中而且不会生效。你甚至可以检查语法而不激活修改(使用commit check命令;见Recipe1.6).commit命令批处理所有的修改(和所有其他任何处于配置模式的人所做的修改)并且理解激活它们。这意味着相互依赖的配置片段在同一时间生效,因此你没有必要担心你添加到配置中的语句的顺序。
当你激活配置时,JUNOS软件在路由器上保存一份拷贝。这会在稍后的Recipe1.14中讨论。
路由器可以接受通过commit命令重复激活配置让它生效。一个常见的错误是忘记提交修改,因此在路由器上调试一个问题时,检查常常是首要的问题。去看这个是否出现其实很简单。你可能在配置中做了一个改动,并且立即使用run命令提交一个操作模式命令来验证与配置改动相匹配的路由器行为,或者当配置或执行一个命令由于打扰而没有提交时。
如果你还没有提交你的改动,当你退出配置模式并返回操作模式式,你会被警告:
aviva@router1# exit
The configuration has been changed but not committed
Exit with uncommitted changes? [yes,no] (yes)
如果你选择退出而没有提交改动或者输入回车或yes,改动会保留在候选配置中但不会被激活。当你再次进入配置模式,无提交配置会提醒你:
aviva@router1> configure
Entering configuration mode
The configuration has been changed but not committed
[edit]
aviva@router1#
如果你还没有决定退出配置模式,你通过比较候选配置和激活的正在运行的配置,查看你(和任何配置模式中的人)的改动。
[edit]
aviva@router1# exit
The configuration has been changed but not committed
Exit with uncommitted changes? [yes,no] (yes) no
Exit aborted
[edit]
aviva@router1# show | compare
[edit system services]
+ telnet;
如果你没有在配置的顶层,就使用下面命令:
[edit system services]
aviva@router1# top show | compare
[edit system services]
+ telnet;
对于有两个RE的路由器,使用comit synchronize命令同时在两个RE上提交配置。(见 Recipe 1.30).
[b]See Also[/b]
Recipes 1.6, 1.11, 1.14, 1.15, 1.17, and 1.30
[/size][/font]
[font=宋体][size=2]Recipe 1.8. 调试一个失败的提交
[b]Problem[/b]
你试图激活一个配置,commit命令连续失败。
[b]Solution[/b]
观察commit操作的每一步:
[edit]
aviva@router1# commit | display detail
2005-02-24 11:49:49 PST: exporting juniper.conf
2005-02-24 11:49:49 PST: expanding groups
2005-02-24 11:49:49 PST: finished expanding groups
2005-02-24 11:49:49 PST: setup foreign files
2005-02-24 11:49:49 PST: propagating foreign files
2005-02-24 11:49:49 PST: complete foreign files
2005-02-24 11:49:50 PST: dropping unchanged foreign files
2005-02-24 11:49:50 PST: daemons checking new configuration
2005-02-24 11:49:50 PST: commit wrapup…
2005-02-24 11:49:50 PST: updating '/var/etc/filters/filter-define.conf'
2005-02-24 11:49:50 PST: activating '/var/etc/keyadmin.conf'
2005-02-24 11:49:50 PST: activating '/var/etc/gtpcd.conf'
2005-02-24 11:49:50 PST: activating '/var/etc/certs'
2005-02-24 11:49:50 PST: executing foreign_commands
2005-02-24 11:49:50 PST: /bin/sh /etc/rc.ui ui_setup_users (sh)
2005-02-24 11:49:50 PST: executing ui_commit in rc.ui
2005-02-24 11:49:51 PST: copying configuration to juniper.save
2005-02-24 11:49:51 PST: activating '/var/run/db/juniper.data'
2005-02-24 11:49:51 PST: notifying daemons of new configuration
2005-02-24 11:49:51 PST: signaling 'Routing protocol daemon', pid 2884, signal1,
status 0 with notification errors enabled
commit complete
[b]Discussion[/b]
aviva@router1# commit | display detail
2005-02-24 13:46:03 PST: exporting juniper.conf
2005-02-24 13:46:03 PST: expanding groups
2005-02-24 13:46:03 PST: finished expanding groups
2005-02-24 13:46:03 PST: setup foreign files
2005-02-24 13:46:03 PST: propagating foreign files
2005-02-24 13:46:03 PST: complete foreign files
2005-02-24 13:46:03 PST: dropping unchanged foreign files
2005-02-24 13:46:03 PST: daemons checking new configuration
[edit protocols rip group alpha-rip-group]
'neighbor fe-0/0/0.0'
Failed to configure neighbor fe-0/0/0.0: already in group alpha-rip-group
error: configuration check-out failed
在这个例子中,在RIP路由协议中有错误,而且这个错误被检查配置软件进程所标识(UNIX后台进程的JUNOS术语)
[/size][/font]
[font=宋体][size=2][b]Recipe 1.9. 退出配置模式
Problem[/b]
当你修改完配置后,需要激活配置并贩货操作模式。
[b]Solution[/b]
从顶层激活配置并退出配置模式:
[edit]
aviva@router1# commit
aviva@router1# quit
aviva@router1>
从较低层提交并退出配置模式:
[edit system]
aviva@router1# commit
aviva@router1# top
[edit]
aviva@router1# quit
aviva@router1>
下面的命令是一个快速变异:
[edit system]
aviva@router1# commit
aviva@router1# exit configuration-mode
aviva@router1>
从任何层次,通过一个单一命令激活配置并退出配置模式:
[edit system]
aviva@router1# commit and-quit
aviva@router1>
[b]Discussion[/b]
这个recipe中的命令显示了几种提供配置后,退出配置模式的变化。如果你使用分离的commit和quit(或exit)命令,你必须在配置模式的顶层使用exit命令退出配置模式。从一个较低的层次,使用top命令迅速返回[edit]层。如果你在较低层次使用exit命令,会从你先前使用edit命令的层次退到最高层次。
这个例子显示了edit和exit命令的顺序:
[edit]
aviva@router1# edit protocols
[edit protocols]
aviva@router1# edit ospf
[edit protocols ospf]
aviva@router1# edit area 0.0.0.1
[edit protocols ospf area 0.0.0.1]
aviva@router1# exit
[edit protocols ospf]
aviva@router1# exit
[edit protocols]
aviva@router1# exit
[edit]
aviva@router1# exit
退出配置模式
aviva@router1>
从较低层次提交并退出配置模式的更迅速的方法就是使用commit命令并跟exit配置模式命令。
也许提交并返回配置模式的最快方式是使用commit and-quit命令。你可以在任何层次使用这个命令。值得注意的是,这个命令仅在没有错误或语法错误的配置中会成功。如果提供失败,CLI会显示一个错误信息,而且你然后会在配置模式中。
[b]See Also[/b]
Recipe 1.7
[/size][/font]
[font=宋体][size=2][b]Recipe 1.10. 保持配置更改的记录
[font=宋体]Problem[/font][/b]
[font=宋体]当你激活一个配置时,你想要一个短信息来描述你所作的改动。[/font]
[/size][size=2][font=宋体][b]Solution
[/b][/font][font=宋体]当你激活配置是需要一个注释:[/font]
[font=宋体] aviva@router1# commit comment "turned on telnet"[/font]
[/size][size=2][font=宋体][b]Discussion
[/b][/font][font=宋体]包含一个对每个配置文件的版本的简短的修改描述,是一个好习惯。这样你可以保持配置修改的历史记录。通过使用commit命令的comment选项来做这个。[/font]
[font=宋体]跟踪到配置中修改的内容和时间,你可以回顾这个注释:[/font]
[font=宋体] aviva@router1> show system commit[/font]
[font=宋体] 0 2005-03-31 20:26:16 UTC by aviva via cli[/font]
[font=宋体] turned on telnet[/font]
[font=宋体] 1 2005-03-31 11:12:28 UTC by aviva via cli[/font]
[font=宋体] set host gildor facility-override local4[/font]
[font=宋体][b]See Also[/b][/font]
[font=宋体]Recipe 1.17[/font]
[/size][/font]
[size=4][font=宋体][size=2][font=宋体][b]Recipe 1.11. 确定配置的修改内容[/b][/font]
[font=宋体][b]Problem[/b][/font]
[font=宋体]当你编辑配置时,需要检查做了哪些修改。[/font]
[font=宋体][b]Solution[/b][/font]
[font=宋体]在当前配置会话中,找出做了哪些修改,使用下面的命令:[/font]
[font=宋体] [edit][/font]
[font=宋体] aviva@RouterG# show | compare[/font]
[font=宋体] [edit interfaces][/font]
[font=宋体] - fe-1/0/1 {[/font]
[font=宋体] - unit 0 {[/font]
[font=宋体] - family inet {[/font]
[font=宋体] - address 10.0.1.2/24;[/font]
[font=宋体] - }[/font]
[font=宋体] - }[/font]
[font=宋体] - }[/font]
[font=宋体]比较当前配置和前一个配置,使用下列命令:[/font]
[font=宋体] [edit][/font]
[font=宋体] aviva@RouterG# show | compare rollback 1[/font]
[font=宋体] [edit protocols ospf][/font]
[font=宋体] - export send-direct;[/font]
[/size][size=2][font=宋体][b]Discussion[/b]
[/font][font=宋体]当你要做一小部分配置工作时,你可以不时的使用show命令来查看添加或删除的配置语句,用这种方式来确认配置。然而,当做了大量修改后,你一般只想要一个所有修改的汇总,这样你就不必搜集整个路由器的配置了。去看所有的修改是一个非常简单的方法,使用top命令先回到配置的顶层,然后使用show | compare 命令,这个命令等效于命令show | compare rollback 0。[/font]
[font=宋体]这实际上是两个命令:show命令显示整个配置,并管道输出到compare命令,最后列出两个命令结果的不同之处(就像Unix diff命令)。[/font]
[font=宋体]实例的输出显示你已经从[edit interfaces]配置层次删除了fe-1/0/1接口。输出的第一行显示了层次级别,而且减号(-)意味着删除。当你添加语句的时候使用加号(+),就像这个例子:[/font]
[font=宋体] [edit][/font]
[font=宋体] aviva@RouterG# show | compare[/font]
[font=宋体] [edit interfaces lo0 unit 0 family inet][/font]
[font=宋体] address 192.168.19.1/32 { … }[/font]
[font=宋体]+ address 127.0.0.1/32;[/font]
[font=宋体]你也可以比较当前配置和先前提交的配置。第二个命令说明了如何去比较。Rollback 1是你现在提交配置的前一个已提交的配置。输出信息的上面直接显示先前配置中已经被删除的语句位于[edit protocols ofps]层。[/font]
[font=宋体]你也可以使用compare命令用已保存文件的文件名和候选配置比较。这种格式支持URL和SCP格式的文件名,因此你可以像下面一样使用命令:[/font]
[font=宋体] [edit][/font]
[font=宋体] aviva@RouterG# show | compare aviva@archives:nightly/my-rtr/2005-12-01.conf [/font]
[font=宋体] [edit system login user testuser][/font]
[font=宋体] - class operator;[/font]
[font=宋体] + class read-only;[/font]
[font=宋体][b]See Also[/b][/font]
[font=宋体]Recipe 1.17[/font][/size]
[size=2][font=宋体][b]Recipe 1.12. 从服务器copy文件配置路由器[/b][/font]
[font=宋体][b]Problem[/b][/font]
[font=宋体]在服务器上有一个路由器的配置文件,你需要copy到路由器上并激活它。[/font]
[font=宋体][b]Solution[/b][/font]
[font=宋体]使用下面的命令copy配置文件到路由器:[/font]
[font=宋体] aviva@router1> file copy server1: router-base-configuration [/font]
[font=宋体] aviva@router1's password:[/font]
[font=宋体] router-base-configuration 100% 10KB 10.0KB/s 00:00[/font]
[font=宋体]验证文件已经copy到路由器:[/font]
[font=宋体] aviva@router1> file list[/font]
[font=宋体] /var/home/aviva/:[/font]
[font=宋体] .ssh/[/font]
[font=宋体] router-base-configuration[/font]
[font=宋体]然后把文件加载到JUNOS CLI::[/font]
[font=宋体] [edit][/font]
[font=宋体] aviva@router1# load override router-base-configuration [/font]
[font=宋体] load complete[/font]
[font=宋体]你应该使用show命令浏览加载的配置并确认配置就是你想要的:[/font]
[font=宋体] aviva@router1# show[/font]
[font=宋体]然后激活配置:[/font]
[font=宋体] [edit][/font]
[font=宋体] aviva@router1# commit[/font]
[font=宋体] commit complete[/font]
[font=宋体][b]Discussion[/b][/font]
[font=宋体]JUNOS配置文件是简单的文本文件格式,因此你可以在服务器上创建一个配置文件,然后加载到路由器。使用file copy命令把配置文件从服务器copy到路由器。这个命令类似于Unix的scp命令。在这个例子中,文件是从服务器的home目录copy到路由器的home目录中。Home目录是有效的当前目录,因此你可以输入一个点(.)标识目录名,就像在Unix中一样。显式路径是/var/home/aviva。密码不会被显示出来,因为当你输入密码的时候,CLI不会响应。[/font]
[font=宋体]由于file copy 命令使用SSH,服务器必须也运行SSH。(你可以使用file copy命令,因为当你初始化路由器的时候就已经配置了SSH。[见Recipe1.1])[/font]
[font=宋体]如果服务器上的文件不在你的home目录中,你可以指定完整的目录路径。在这个例子中,你要copy的文件在/tmp/config目录中:[/font]
[font=宋体] aviva@router1> file copy server1:/tmp/config/router-base-configuration . [/font]
[font=宋体]包括使用load命令和override选项,用你加载的文件的内容替换整个候选配置。 [/font]
[font=宋体]如果你只增加一个新的配置片段,使用load merge 命令插入。举一个例子,如果你正在配置让一个新用户访问路由器,你可以创建一个包含配置信息的文件。例如,如果你创建router-config-new-user文件包括下面内容:[/font]
[font=宋体] system {[/font]
[font=宋体] login {[/font]
[font=宋体] user mike {[/font]
[font=宋体] class superuser;[/font]
[font=宋体] }[/font]
[font=宋体] }[/font]
[font=宋体] }[/font]
[font=宋体]你把这个文件copy到路由器之后,使用load merge 命令来合并这部分配置到候选配置中:[/font]
[font=宋体] [edit][/font]
[font=宋体] aviva@router1# show system [/font]
[font=宋体] host-name router1;[/font]
[font=宋体] domain-name mynetwork.com;[/font]
[font=宋体] backup-router 192.168.600.1;[/font]
[font=宋体] time-zone America/Los_Angeles[/font]
[font=宋体] root-authentication {[/font]
[font=宋体] encrypted-password "$1$ZUlES4dp$OUwWo1g7cLoV/aMWpHUnC/"; ## SECRET-DATA;[/font]
[font=宋体] }[/font]
[font=宋体] name-server {[/font]
[font=宋体] 192.168.400.1;[/font]
[font=宋体] }[/font]
[font=宋体] login {[/font]
[font=宋体] class superuser-local {[/font]
[font=宋体] permissions all;[/font]
[font=宋体] }[/font]
[font=宋体] user aviva {[/font]
[font=宋体] class superuser;[/font]
[font=宋体] }[/font]
[font=宋体] }[/font]
[font=宋体] aviva@router1# load merge router-config-new-user [/font]
[font=宋体] aviva@router1# show system [/font]
[font=宋体] host-name router1;[/font]
[font=宋体] domain-name mynetwork.com;[/font]
[font=宋体] backup-router 192.168.600.1;[/font]
[font=宋体] time-zone America/Los_Angeles;[/font]
[font=宋体] root-authentication {[/font]
[font=宋体] encrypted-password "$1$ZUlES4dp$OUwWo1g7cLoV/aMWpHUnC/"; ## SECRET-DATA;[/font]
[font=宋体] }[/font]
[font=宋体] name-server {[/font]
[font=宋体] 192.168.400.1;[/font]
[font=宋体] }[/font]
[font=宋体] login {[/font]
[font=宋体] class superuser-local {[/font]
[font=宋体] permissions all;[/font]
[font=宋体] }[/font]
[font=宋体] user aviva {[/font]
[font=宋体] class superuser;[/font]
[font=宋体] }[/font]
[font=宋体] user mike {[/font]
[font=宋体] class superuser;[/font]
[font=宋体] } [/font]
[font=宋体] }[/font]
[font=宋体]从输出信息中可以看到,用户mike现在在候选配置的[edit system]部分。此外,记住使用commit命令来激活这些改动。[/font]
[font=宋体]如果服务器上的文件包含一个新用户,你直接可以加载并合并到配置中:[/font]
[font=宋体] [edit][/font]
[font=宋体] aviva@router1# show system login [/font]
[font=宋体] class superuser-local {[/font]
[font=宋体] permissions all;[/font]
[font=宋体] }[/font]
[font=宋体] user aviva {[/font]
[font=宋体] class superuser;[/font]
[font=宋体] }[/font]
[font=宋体] aviva@router1# load merge relative server1:/tmp/router-config-new-user [/font]
[font=宋体] aviva@server1's password:[/font]
[font=宋体] router-config-new-users 100% 54 0.1KB/s 00:00[/font]
[font=宋体] load complete[/font]
[font=宋体] [edit][/font]
[font=宋体] aviva@router1# show system login [/font]
[font=宋体] class superuser-local {[/font]
[font=宋体] permissions all;[/font]
[font=宋体] }[/font]
[font=宋体] user aviva {[/font]
[font=宋体] class superuser;[/font]
[font=宋体] }[/font]
[font=宋体] user mike {[/font]
[font=宋体] class superuser;[/font]
[font=宋体] } [/font]
[font=宋体]在load merge命令中的Relative选项执行操作不需要完整的层次级别。使用这个选项,文件中的层次级别必须是清楚和明确的。[/font]
[font=宋体]如果在另外一台路由器上,文件包含新用户的配置,你可以使用相同的命令copy到你的路由器上。指定路由器命令代替服务器名称。[/font][/size]
[size=2][b]Recipe 1.13. 从终端窗口拷贝文本来配置路由器
[font=宋体]Problem[/font][/b]
[font=宋体]路由器的一部分配置显示在另一个终端或PC的窗口上,并且你想copy配置到另外一台路由器并激活它。[/font]
[font=宋体][b]Solution[/b][/font]
[font=宋体]使用load merge terminal命令:[/font]
[font=宋体] aviva@router1> configure[/font]
[font=宋体] Entering configuration mode[/font]
[font=宋体] [edit][/font]
[font=宋体] aviva@router1# load merge terminal[/font]
[font=宋体] [Type ^D at a new line to end input][/font]
[font=宋体]然后剪切并粘贴到这里,粘贴完以后输入ctrl-d。[/font]
[font=宋体][b]Discussion[/b][/font]
[font=宋体]配置路由器的时候使用load merge termial命令从一个计算机的一个窗口剪切配置文本并粘贴到路由器的终端窗口是非常节省时间的。这是一个伟大的技术,当你从一个浏览器或者emial窗口拷贝配置文本,或当你从一台路由器往另外一台路由上传播相同的或相似的配置。用一个简单的例子说明一下,假设你正在路由器上配置PIM-SM,并正从浏览器拷贝配置。这里是浏览器中的配置:[/font]
[font=宋体] protocols {[/font]
[font=宋体] pim {[/font]
[font=宋体] interface all {[/font]
[font=宋体] mode sparse;[/font]
[font=宋体] version 2;[/font]
[font=宋体] }[/font]
[font=宋体] interface fxp0.0 {[/font]
[font=宋体] disable;[/font]
[font=宋体] }[/font]
[font=宋体] }[/font]
[font=宋体] }[/font]
[font=宋体]从浏览器中拷贝文本,然后,在路由器的配置窗口,进入配置模式,到正确的配置层次,并粘贴文本。如果PIM还没有配置的话,会把它合并到现存的配置中:[/font]
[font=宋体] aviva@router1> configure [/font]
[font=宋体] Entering configuration mode[/font]
[font=宋体] [edit][/font]
[font=宋体] aviva@router1# load merge terminal [/font]
[font=宋体] [Type ^D at a new line to end input][/font]
[font=宋体] cut and paste here to add the lines shown below [/font]
[font=宋体] protocols [/font]
[font=宋体] {[/font]
[font=宋体] pim {[/font]
[font=宋体] interface all {[/font]
[font=宋体] mode sparse;[/font]
[font=宋体] version 2;[/font]
[font=宋体] }[/font]
[font=宋体] interface fxp0.0 {[/font]
[font=宋体] disable;[/font]
[font=宋体] }[/font]
[font=宋体] }[/font]
[font=宋体] }[/font]
[font=宋体] ^D [/font]
[font=宋体] load complete[/font]
[font=宋体]首先输入load merge terminal命令并回车。然后粘贴拷贝的文本,完成后输入ctrl-d。这一段开始于配置的顶层,[edit protocol],因此你可以不用输入任何东西。如果配置开始于较低层,你需要到配置层(使用edit配置模式命令),或着在开放的层次语句输入并自己关闭括号。如果你配置的PIM正好有两个接口命令而且你在[edit]层,你需要输入几行打开protocols{ 和 PIM{ 并且用两行括号}来关闭。[/font]
[font=宋体] [edit][/font]
[font=宋体] aviva@router1# load merge terminal [/font]
[font=宋体] [Type ^D at a new line to end input][/font]
[font=宋体] protocols {[/font]
[font=宋体] pim { [/font]
[font=宋体] type your paste command here to paste the lines shown below [/font]
[font=宋体] interface all {[/font]
[font=宋体] mode sparse;[/font]
[font=宋体] version 2;[/font]
[font=宋体] }[/font]
[font=宋体] interface fxp0.0 {[/font]
[font=宋体] disable;[/font]
[font=宋体] }[/font]
[font=宋体] }[/font]
[font=宋体] }[/font]
[font=宋体] ^D [/font]
[font=宋体] load complete[/font]
[font=宋体]如果你忘记了合适数量的关闭括号},CLI会显示错误信息。[/font]
[font=宋体]这里,第一行的错误信息说明遗漏了一个关闭括号},第二行说明了层次:[/font]
[font=宋体] terminal:9:(0) syntax error: }[/font]
[font=宋体] [edit protocols pim][/font]
[font=宋体] ''[/font]
[font=宋体] syntax error[/font]
[font=宋体] load complete (1 errors)[/font]
[font=宋体]然而,对于这样一个简单的战术错误,CLI添加剩余的关闭括号}.你可以通过检查配置来验证:[/font]
[font=宋体] [edit][/font]
[font=宋体] aviva@router1# show protocols[/font]
[font=宋体] pim {[/font]
[font=宋体] interface all {[/font]
[font=宋体] mode sparse;[/font]
[font=宋体] version 2;[/font]
[font=宋体] }[/font]
[font=宋体] interface fxp0.0 {[/font]
[font=宋体] disable;[/font]
[font=宋体] }[/font]
[font=宋体] } <-- CLI added this last brace[/font]
[font=宋体] [edit][/font]
[font=宋体] aviva@router1# commit check[/font]
[font=宋体] configuration check succeeds[/font]
[font=宋体]你会发现CLI增加了最后的括号。Commit check命令确认了这个修正,并指出了配置文件中的语法错误。[/font]
[/size]
[size=2][font=宋体][b]Recipe 1.14. 备份路由器的配置[/b][/font]
[font=宋体][b]Problem[/b][/font]
[font=宋体]把路由器的配置备份到远程服务器上。[/font]
[font=宋体][b]Solution[/b][/font]
[font=宋体]你可以使用下列命令把现行的配置文件copy到服务器:[/font]
[font=宋体] aviva@router1> file copy /config/juniper.conf.gz server1:/homes/aviva/tmp [/font]
[font=宋体] aviva@server1's password:[/font]
[font=宋体] juniper.conf.gz 100% 2127 2.1KB/s 00:00[/font]
[font=宋体]从配置模式使用save命令copy候选配置到服务器的home目录:[/font]
[font=宋体] [edit][/font]
[font=宋体] aviva@router1# save server1:configuration-march02[/font]
[font=宋体] aviva@server1's password:[/font]
[font=宋体] tempfile 100% 11KB 11.2KB/s 00:00[/font]
[font=宋体] Wrote 433 lines of configuration to 'server1:configuration-march02'[/font]
[font=宋体]你也可以把它保存到路由器home目录中的一个文件:[/font]
[font=宋体] [edit][/font]
[font=宋体] aviva@router1# save configuration-march02 [/font]
[font=宋体] Wrote 433 lines of configuration to 'configuration-march02'[/font]
[font=宋体] aviva@router1# run file list [/font]
[font=宋体] /var/home/aviva:[/font]
[font=宋体] .ssh/[/font]
[font=宋体] configuration-march02[/font]
[font=宋体]另外一个配置配置文件的方法是每次提交配置后自动迁移文件:[/font]
[font=宋体] [edit system][/font]
[font=宋体] aviva@router1# set archival configuration transfer-on-commit [/font]
[font=宋体] aviva@router1# set archival configuration archive-sites ftp: //aviva:password@server1.[/font]
[font=宋体] mynetwork.com:/m20-config-archives [/font]
[font=宋体][b]Discussion[/b][/font]
[font=宋体]这个recipe给出了几种保存路由器配置的方法。使用第一个命令从配置模式copy当前运行的配置文件到一台服务器。另外两个命令是配置模式的命令,保存候选配置到一台服务器或者路由器的home目录。如果在提交配置后使用save命令,你会有效的备份正在运行的配置。Save命令从当前层次开始保存配置。在这个recipe中,命令都是在顶层([edit]层)来执行的,因此整个配置都被保存了下来。如果你在较低的层执行这个命令,只有一部分配置被保存下来。下面的命令仅保存了BGP的配置:[/font]
[font=宋体] [edit protocols bgp][/font]
[font=宋体] aviva@router1# save configuration-bgp-march02 [/font]
[font=宋体] Wrote 15 lines of configuration to 'configuration-bgp-march02'[/font]
[font=宋体]使用file show命令验证内容:[/font]
[font=宋体] [edit protocols bgp][/font]
[font=宋体] aviva@router1# run file show configuration-bgp-march02 [/font]
[font=宋体] protocols {[/font]
[font=宋体] replace: [/font]
[font=宋体] bgp {[/font]
[font=宋体] export send-statics;[/font]
[font=宋体] group internal {[/font]
[font=宋体] type internal;[/font]
[font=宋体] local-address 10.0.0.1;[/font]
[font=宋体] neighbor 10.0.0.2;[/font]
[font=宋体] neighbor 10.0.0.3;[/font]
[font=宋体] neighbor 10.0.0.5;[/font]
[font=宋体] neighbor 10.0.0.4;[/font]
[font=宋体] neighbor 10.0.0.6;[/font]
[font=宋体] }[/font]
[font=宋体] }[/font]
[font=宋体] }[/font]
[font=宋体]注意,CLI在文件中插入了replace标记。如果你稍后用load replace comfiguration-bgp-mach02命令加载这个文件到配置中,CLI用你加载的文件内容替换整个配置的[edit protocols bgp]部分。[/font]
[font=宋体]本recipe中的最后一个命令在你每次提交配置后自动迁移配置文件,既然这样,在服务器的m20-config-archives目录中保存所有文件。文件以压缩(.gz)的格式保存,文件名包括路由器的名称和提交操作的日期、时间,就像这个例子:[/font]
[font=宋体] router1_juniper.conf.gz_20050627_190538[/font]
[font=宋体]文件名后面的数字是日期(2005年6月27日)和时间(1905小时或7:05 p.m,38秒)。需要注意的是时间永远是UTC,即使你的路由器设定了本地时间。一个不同之处是使用set archiveal命令在指定的时间间隔保存配置,每1,440分钟(24小时):[/font]
[font=宋体] [edit system][/font]
[font=宋体] aviva@router1# set archival configuration transfer-interval 1440 [/font]
[font=宋体] aviva@router1# set archival configuration archive-sites ftp://aviva:password@server1.[/font]
[font=宋体] mynetwork.com:/m20-config-archives [/font]
[font=宋体]你可以任意指定从15分钟到2880分钟(48小时)的间隔。[/font]
[font=宋体]Set archival命令的一个缺点是密码没有加密,在配置文件中还是以ASCII(明文)方式显示。[/font]
[font=宋体]每次你使用任何方式的commit命令激活配置时,JUNOS软件也保存一份配置的拷贝。JUNOS软件保存最后的50份配置:当前激活的配置和前面49次提交的配置。激活(当前运行)的配置(juniperconfgz)和最近3个配置(juniper.conf.1.gz,junper.conf.2.gz,和juniper.conf.3.gz)都在路由器flash盘的/config目录中。由于flash盘空间有限,文件都以压缩的格式(.gz)存储。[/font]
[font=宋体] aviva@router1> file list /config[/font]
[font=宋体] /config:[/font]
[font=宋体] juniper.conf.1.gz[/font]
[font=宋体] juniper.conf.2.gz[/font]
[font=宋体] juniper.conf.3.gz[/font]
[font=宋体] juniper.conf.gz[/font]
[font=宋体] license/[/font]
[font=宋体] rescue.conf.gz[/font]
[font=宋体]剩余的配置juniper.conf.4.gz到juniper.conf.49.gz在路由器硬盘的/var/db/config目录中。[/font]
[font=宋体]这样文件同样被压缩。[/font]
[font=宋体] aviva@router1> file list /var/db/config[/font]
[font=宋体] /var/db/config:[/font]
[font=宋体] juniper.conf++[/font]
[font=宋体] juniper.conf.10.gz[/font]
[font=宋体] juniper.conf.11.gz[/font]
[font=宋体] juniper.conf.12.gz[/font]
[font=宋体] juniper.conf.13.gz[/font]
[font=宋体] juniper.conf.14.gz[/font]
[font=宋体] juniper.conf.15.gz[/font]
[font=宋体] …[/font]
[font=宋体] juniper.conf.49.gz[/font]
[font=宋体] juniper.conf.5.gz[/font]
[font=宋体] juniper.conf.6.gz[/font]
[font=宋体] juniper.conf.7.gz[/font]
[font=宋体] juniper.conf.8.gz[/font]
[font=宋体] juniper.conf.9.gz[/font]
[font=宋体]每次你提交一个配置,都被命名为juniper.conf.gz,已存在的juniper.conf.gz文件被修改为juniper.conf.1.gz,而且所有的先前剩余序列号的配置都被重新计数。这就意味着JUNOS备份配置文件要不断的重命名。这种行为指出了使用save命令的一个好处:它允许你用固定的名称把配置存储到一个文件中。[/font]
[font=宋体]一个用来归档和健康路由器硬件以及软件配置的公开软件工具是RANCI([url=http://www.shurbbery.net/rancid][color=#0000ff]http://www.shurbbery.net/rancid[/color][/url])。你可以用这个工具跟踪配置的修改。 [/font]
[font=宋体][b]See Also[/b][/font]
[font=宋体]Recipe 1.18[/font][/size]
[size=2]Recipe 1.15. 在计划时间激活配置
Problem
你想在稍后的一个时间激活一个新的或修改过的路由器配置。
Solution
你计划在一个时间让软件来激活配置。
[edit]
aviva@router1# commit at 10:45
configuration check succeeds
commit at will be executed at 2005-02-25 10:45:00 PST
Exiting configuration mode
这个时间是24小时(军用)格式,因此指定一个12 p.m.以后的时间,用下面的命令:
[edit]
aviva@router1# commit at 22:45
configuration check succeeds
commit at will be executed at 2005-02-25 22:45:00 PST
Exiting configuration mode
计划在其他工作日激活配置,使用完整的日期和时间:
[edit]
aviva@router1# commit at "2005-02-26 10:45"
configuration check succeeds
commit at will be executed at 2005-02-26 10:45:00 PST
Exiting configuration mode
取消一个预定的提交操作,使用clear system commit命令,使用下面的命令:
aviva@router1> clear system commit
Pending commit cleared
Discussion
有时你想推迟激活一个配置,计划在稍后的某个时间来做。比如,如果你是一个网络供应商并且有一个网络修改时的服务窗口,你想要那个新的配置在那个窗口生效。或者,如果你对很多路由器做了修改,你可能想要所有路由器的修改同时或者在同一时间窗口生效,尤其如果你在做路由器协议的修改,这可能影响整个网络的路由和路由收敛。
使用commit at命令是计划激活配置的一个方法。这个recipe中开始的两个命令在当天的特定时间提交配置,一个是10:45 a.m. 另外一个是10:45 p.m。第三个命令计划在另外一天的10:45 a.m提交配置。
通过查看当前运行的配置文件的时间戳,验证commit命令实际上已经执行:
aviva@router1> file list detail /config
/config:
total 34
-rw-r----- 1 root wheel 2127 Feb 25 03:10 juniper.conf.1.gz
-rw-r----- 1 root wheel 2127 Feb 25 03:00 juniper.conf.2.gz
-rw-r----- 1 root wheel 2127 Feb 24 12:56 juniper.conf.3.gz
-rw-r----- 1 root wheel 2127 Feb 25 10:45 juniper.conf.gz
drwxr-xr-x 2 root wheel 512 Jan 18 2004 license/
你可以看到当前运行的配置文件,juniper.conf.gz,是2月25日10:45 a.m 被激活的。
当你使用commit at命令时,你必须在配置的[edit]层次。你指定的时间和日期都是基于路由器的时钟。使用show system uptime命令确定路由器上设置的当前日期和时间:
aviva@router1> show system uptime
Current time: 2005-02-25 10:59:09 PST
System booted: 2005-02-25 03:07:42 PST (07:51:27 ago)
Protocols started: 2005-02-25 03:10:07 PST (07:49:02 ago)
Last configured: 2005-02-25 10:45:12 PST (00:13:57 ago) by aviva
10:59AM PST up 7:51, 1 user, load averages: 0.01, 0.02, 0.00
确定一个配置是否和何时被计划激活,使用show system commit命令:
aviva@router1> show system commit
commit requested by aviva via cli at 2005-02-26 10:00:00 PST
0 2005-02-25 10:45:12 PST by aviva via cli commit at
1 2005-02-25 03:10:21 PST by aviva via cli
2 2005-02-25 03:01:01 PST by aviva via cli
第一行说明一个配置激活已经被请求,谁请求激活,和何时被激活。这个命令也列出了所有发生在路由器上的提交操作和谁激活它们的历史记录,并且提供了一个配置改动的历史记录。
另外一个方法就是,当你进入配置模式时会有一个配置激活已经被计划的信息:
aviva@router1> configure
Entering configuration mode
Users currently editing the configuration:
aviva terminal p0 (pid 6231) on since 2005-02-25 11:55:07 PST, idle 00:15:54
commit-at
注意,当一个延迟配置激活被计划提交时,你不能给配置提交任何改动:
[edit]
aviva@router1# commit
error: Another commit is pending
取消一个计划提交,使用clear system commit命令。[/size]
[/font][/size]
[/font][/size]
沧浪之水 2007-12-5 19:22
继续学习..........................
雨笑残荷 2007-12-5 20:34
谢谢了啊!~~~~~~~~~~~~~:handshake
jansen0226 2008-5-28 12:53
收藏了,这么好的东东还真难找啊!真是不错的类,谢谢
jansen0226 2008-5-28 12:56
很感谢 东西很好 哈哈收藏
BinHaiLu.Com 2008-12-17 10:05
你的家乡有滨海路吗?!
*** 作者被禁止或删除 内容自动屏蔽 ***