目录
上章我讲了ros基础命令的使用及如何学好ros命令,并拿了一个例子进行了串讲。后面将花几章讲一下使用频率比较高的常用命令。
本章先讲print命令
一、print命令介绍
1.1 print打印命令介绍
在ros官网wiki的常用命令对print的介绍如下:
print-显示可从特定命令级别访问的所有信息。因此,/system clock print显示系统日期和时间, /ip route print 显示所有路由等。如果当前级别中有项目列表,并且它们不是只读的,即您可以更改/删除它们(例如,只有项目列表是/ system历史记录,其中显示了已执行操作的历史记录),然后print命令还会分配编号,该编号用于处理此列表中的项目的所有命令。
简单地说,print是打印功能的命令,属于子命令。这个命令使用频繁很高,很有必要讲一下
1.2 print打印命令常用参数
print打印命令常用参数如下:
from:按指定顺序显示指定的项目。
where:仅显示符合指定条件的项目。 where属性的语法类似于find命令。
brief:简要。强制打印命令使用表格输出形式(默认方式)
detail:详情。强制打印命令使用property = value输出形式
count-only:仅计数-显示项目数
file :文件。将特定子菜单的内容打印到路由器上的文件中。
interval:时间间隔。每隔间隔秒更新一次print命令的输出。
oid:oid值。打印可从SNMP访问的属性的OID值
without-paging:不分页。每隔一屏后打印输出而不会停止
二、如何学好print打印命令
上面仅仅只是介绍print打印命令,就OK了吗,那当然不行,最好是结合自己的经验,遇到的情况。可能有人问,我是初学者怎么有实际操作经验,那就问有经验的人就行了,比如加裙我们一起交流也是一个不错的选择。自己可以叫别人出小项目,自己尝试去做,反正没时候限制,就慢慢折腾^_^
主要是还对参数的理解,把它应用到实际项目中。下面我就拿几个来讲解,其它的你完全有自己自己搞定了
PS:如果要了解命令不断的使用问号?帮助和tab补全功能。
三、print打印参数结合例子讲解
这里我就拿 interface pint进行讲解吧,先看一下此命令的效果
查看此命令的print子命令所支持的参数,如下图所示:
3.1 直接指定编号from参数
3.1.1 查看使用说明
from:按指定顺序显示指定的项目。
这个解释有点抽象啊,我们可以拿具体来讲,输入“interface print ?”,帮助,得到from在interface命令的作用为:
from -- Interface name or number obtained from print command
这个是不是清晰很多了,再看一下这个参数有哪些选项
发现没有详解,不过上面的解释已经足够让我们知道怎么使用了,有2种用法一种是接接口名,连一种是接编号(即列名为#下面的数字)
3.1.2 from例子
我想打印一下lan1的网卡情况,从interface pint 打印知道lan1的编号为3,所以命令如下:
[hua@MikroTik] > interface print from=3
Flags: D - dynamic, X - disabled, R - running, S - slave
# NAME TYPE ACTUAL-MTU L2MTU MAX-L2MTU MAC-ADDRESS
0 R lan1 ether 1500 00:0C:29:F4:D6:73
但是编号并不是固定的啊,比如删除IP地址再添加上一个,可能是其它编号,并不是原来的编号了,所以要找一个固定的,为什么要找一个固定的,这为后面写脚本做准备,你都不断变地,我怎么写成脚本??!!
要固定的所以就用接口名了,命令如下:
[hua@MikroTik] > interface print from="lan1"
Flags: D - dynamic, X - disabled, R - running, S - slave
# NAME TYPE ACTUAL-MTU L2MTU MAX-L2MTU MAC-ADDRESS
0 R lan1 ether 1500 00:0C:29:F4:D6
3.2 条件过滤where参数(重点)
3.2.1 where参数介绍
这个参数使用频率也很高
where:仅显示符合指定条件的项目。 where属性的语法类似于find命令。
where可用的参数如下图所示:
很强大啊,一堆,上面说了where后面接“空格+值”,值由 “数字,字母字符._” 一部分或全部组成
引用(蓝色部分)
! 逻辑否定
“ 带引号的字符串的开头
$ 取变量值
( 子表达式的开始
- 一元减
> 大于
[ 开始命令替换
{ 数组值的开始
〜 位反转
.id 项目编号
comment 注解
disabled 已禁用定义是否忽略或使用项目
mtu 最大传输单位
name 接口名称
type 接口的类型
PS:where直接加tab补全还要查可以直接使用的属性名
3.2.2 例子
要用好这个where,往往跟 detail 往详情结合起来使用。
这样对照着详细就可以很好的使用where了,下面是例子
!用法,如:列出除了lan1外所有网卡信息
引号用法:如果值有引号,建议用引号,有时没有特殊符号不用引号也行
$代替:简单来说就是取变量值。如我定义了一个全局变量,mylan,值为lan1
小括号:这个脚本中使用比较多,尤其是不好判断,和涉及优先等的情况下,如下面列出网卡流量超过100M网卡接口。因为没有明显的优化级,所以不加也行,只是举个例子而已。
大于上面图讲了,减号没有什么好讲的
中括号:这个有必要讲一下。中括号的意思是把结果当成值。这个是什么意思呢,就是某个参数的值是另一个命令执行的结果,比如我想以id方式找,就可用到[]了
上面中括号中“find name="lan1"”的意思,找到网卡名字为“lan1”的项目编号,即.id号
大括号:表示一般语句块。一般是结合脚本来的,当要执行几条命令,比如判断语句,循环语句。这里就不讲了,学到脚本自然就会使用。
~:位反转,并没用到,一般使用ip地址,相于CCNA中所说的反掩码
PS:如果是直接使用在属性中,则表示正则表达式匹配
type:主要是类型,有ppp、ether等,用到的时候print一下就能看到了
3.3 数组输出as-value(重要)
3.3.1 as-value说明
此参数主要是把它变成数组,有脚本编程中挻重要的
3.3.1 例子
找到lan1以数组的方式输出
此用法往往是把它保存在数据变量中,然后要那个值就以“->”符号取就行了
上面的意思是建立一个名为laninfo的全局变量,然后把 interface print as-value where name="lan1" 执行的结果(是数组)赋值给此变量。
($laninfo->0)->"name"的意思是 ($laninfo->0)为输出第1个数据,再从第1个数组中取字段为name的值。
3.4 统计参数count-only(重要)
3.4.1 count-only说明
数据统计,这个很有用,比如ppoe在线人数。
3.4.2 例子
这个数据统计很有用,我这里就统计一下路由的ethernet接口有多少个
上面表示有6块网卡,没错吧
3.5 流量统计stats(重要)
3.5.1 stats说明
很多人都找不到winBox对应的流星统计信息,所以在这里特别说一下
3.5.2 例子
列出lan1的流量状况
3.6 其它
其它的像detail、interval、value-list我就不讲了,自己慢慢打一下练习一下就行了