F5 iRule学习之2全局数组变量

变量的定义都很简单,set var "F5",全局变量的定义也是,set ::var "F5",那么全局数组变量呢?

如何定义?如何访问呢?

首先我们看下,全局数组我们可以理解为class,也就是Data Group,在这里有二种文件存放位置,和三种类型(字符串,地址,整型).

一种是内置的存放在bigip.conf文件中,另一种扩展文件是存放在文件系统中,如/var/class/文件夹中.

以下,是v10的一种格式转换,抄自devcentral


Address Classes

   [internal class]
   class addr_testclass {
      {
         host 192.168.1.1
         host 192.168.1.2 { "host 2" }
         network 192.168.2.0/24
         network 192.168.3.0/24 { "network 2" }
      }
   }

   [external class]
   class addr_testclass_ext {
      type ip
      filename "/var/class/addr_testclass.class"
      separator ":="
      }

   [/var/class/addr_testclass.class]
   host 192.168.1.1,
   host 192.168.1.2 := "host 2",
   network 192.168.2.0/24,
   network 192.168.3.0/24 := "network 2",

Note: You can also add network entries in the address type external file like shown immediately below, but when the class is updated, it will be converted to the CIDR format.

   network 192.168.4.0 mask 255.255.255.0 := “network 3”,
   network 192.168.5.0 prefixlen 24 := "network 4",

Integer Classes

   [internal class]
   class int_testclass {
      {
         1 { "test 1" }
         2 { "test 2" }
      }
   }

   [external class]
   class int_testclass_ext {
      type value
      filename "/var/class/int_testclass.class"
      separator ":="
      }

   [/var/class/int_testclass.class]
   1 := "test 1",
   2 := "test 2",

String Classes

With string classes, quotes are necessary on the types and values:

   [internal class]
   class str_testclass {
      {
         "str1" { "value 1" }
         "str2" { "value 2" }
      }
   }

   [external class]
   class str_testclass_ext {
      type string
      filename "/var/class/str_testclass.class"
      separator ":="
      }

   [/var/class/str_class.class]
   "str1" := "value 1",
   "str2" := "value 2",

内置的我们可以通过F5界面的Data group添加,扩展的我们需要前面的面板,外加vi功能.

这样,我们就定义了几组相关的数组数据。如何访问呢?

我们可以使用class命令,它是v10+高级功能的数组访问功能函数.

如[class element 0 class_name]返回class_name索引0的元素.


其他的可以好好看看class命令!

你可能感兴趣的:(F5,iRule)