目录

​一、print命令介绍​

​1.1 print打印命令介绍​

​1.2 print打印命令常用参数​

​二、如何学好print打印命令​

​三、print打印参数结合例子讲解​

​3.1 直接指定编号from参数​

​3.1.1 查看使用说明​

​3.1.2 from例子​

​3.2 条件过滤where参数(重点)​

​3.2.1 where参数介绍​

​3.2.2 例子​

​3.3 数组输出as-value(重要)​

​3.3.1 as-value说明​

​3.3.1 例子​

​3.4 统计参数count-only(重要)​

​3.4.1 count-only说明​

​3.4.2 例子​

​3.5 流量统计stats(重要)​

​3.5.1 stats说明​

​3.5.2 例子​

​ 3.6 其它​


上章我讲了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进行讲解吧,先看一下此命令的效果

hualinux ros 1.8: 命令(二) 常用命令之 print_ros print

查看此命令的print子命令所支持的参数,如下图所示:

hualinux ros 1.8: 命令(二) 常用命令之 print_ros常用命令_02

3.1 直接指定编号from参数

3.1.1 查看使用说明

from:按指定顺序显示指定的项目。

这个解释有点抽象啊,我们可以拿具体来讲,输入“interface print ?”,帮助,得到from在interface命令的作用为:

from -- Interface name or number obtained from print command

这个是不是清晰很多了,再看一下这个参数有哪些选项

hualinux ros 1.8: 命令(二) 常用命令之 print_ros命令之print_03

发现没有详解,不过上面的解释已经足够让我们知道怎么使用了,有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可用的参数如下图所示:

hualinux ros 1.8: 命令(二) 常用命令之 print_hualinux ros_04

很强大啊,一堆,上面说了where后面接“空格+值”,值由 “数字,字母字符._” 一部分或全部组成

     引用(蓝色部分) 

         ! 逻辑否定
          “  带引号的字符串的开头
          $  取变量值
          ( 子表达式的开始
          -  一元减
          >   大于
          [  开始命令替换
          {  数组值的开始
          〜  位反转
        .id 项目编号
    comment 注解
   disabled 已禁用定义是否忽略或使用项目
        mtu 最大传输单位
       name 接口名称
       type 接口的类型

PS:where直接加tab补全还要查可以直接使用的属性名

hualinux ros 1.8: 命令(二) 常用命令之 print_hualinux ros_05

3.2.2 例子

要用好这个where,往往跟 detail 往详情结合起来使用。

hualinux ros 1.8: 命令(二) 常用命令之 print_ros命令之print_06

这样对照着详细就可以很好的使用where了,下面是例子

!用法,如:列出除了lan1外所有网卡信息


引号用法:如果值有引号,建议用引号,有时没有特殊符号不用引号也行


$代替:简单来说就是取变量值。如我定义了一个​​全局变量​​,mylan,值为lan1


小括号:这个脚本中使用比较多,尤其是不好判断,和涉及优先等的情况下,如下面列出网卡流量超过100M网卡接口。因为没有明显的优化级,所以不加也行,只是举个例子而已。


大于上面图讲了,减号没有什么好讲的

中括号:这个有必要讲一下。中括号的意思是把结果当成值。这个是什么意思呢,就是某个参数的值是另一个命令执行的结果,比如我想以id方式找,就可用到[]了

hualinux ros 1.8: 命令(二) 常用命令之 print_ros命令之print_07

上面中括号中“find name="lan1"”的意思,找到网卡名字为“lan1”的项目编号,即.id号

大括号:表示一般语句块。一般是结合脚本来的,当要执行几条命令,比如判断语句,循环语句。这里就不讲了,学到脚本自然就会使用。

~:位反转,并没用到,一般使用ip地址,相于CCNA中所说的反掩码

hualinux ros 1.8: 命令(二) 常用命令之 print_ros print_08

PS:如果是直接使用在属性中,则表示正则表达式匹配

hualinux ros 1.8: 命令(二) 常用命令之 print_ros常用命令_09

type:主要是类型,有ppp、ether等,用到的时候print一下就能看到了

hualinux ros 1.8: 命令(二) 常用命令之 print_ros命令之print_10

3.3 数组输出as-value(重要)

3.3.1 as-value说明

此参数主要是把它变成数组,有脚本编程中挻重要的

3.3.1 例子

找到lan1以数组的方式输出

hualinux ros 1.8: 命令(二) 常用命令之 print_hualinux ros_11

此用法往往是把它保存在数据变量中,然后要那个值就以“->”符号取就行了

hualinux ros 1.8: 命令(二) 常用命令之 print_ros print_12

上面的意思是建立一个名为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接口有多少个

hualinux ros 1.8: 命令(二) 常用命令之 print_ros命令_13

上面表示有6块网卡,没错吧

3.5 流量统计stats(重要)

3.5.1 stats说明

很多人都找不到winBox对应的流星统计信息,所以在这里特别说一下

3.5.2 例子

列出lan1的流量状况

hualinux ros 1.8: 命令(二) 常用命令之 print_ros print_14

 3.6 其它

其它的像detail、interval、value-list我就不讲了,自己慢慢打一下练习一下就行了