Ovsdb-client 基本命令

百里成仁
2023-12-01

1.ovsdb-client简介
Ovsdb-client是通过ovsdb管理协议,来与ovsdb数据库服务器进行通信。通信的方法根据协议RFC 7047规定的有以下各种命令,见(ovsdb-client使用)。
本文主要讲一下ovsdb-client的基本命令及用法。
2.ovsdb-client使用
1.ovsdb-client list_dbs 该命令是连接到服务器,检索已知数据库的列表,每行打印一个。这些数据库名称是可以在以下命令中用于数据库的名称。
2.ovsdb-client get_schema 该命令是获取生成数据库的Schema
3.ovsdb-client transact 该命令是提交一系列的数据库事务,而提交事务又分为对数据库的各种操作:
基本格式为ovsdb-client transact ‘[“数据库名称”,{“op”:”操作”,”table”:”表名”,…}]’
(1)Insert
ovsdb-client transact ‘[“Open_vSwitch”,{“op”:“insert”,“table”:“Open_vSwitch”,“row”:{“name”:“xxx”,…}}]’ //向Open_vSwitch数据库中的“Open_vSwitch”表中插入一行数据
(2)Selsect
ovsdb-client transact ‘[“Open_vSwitch”,{“op”:“select”,“table”:“Open_vSwitch”,“where”:[[“name”,"",“xxx”]]}]’ //查询数据库Open_vSwitch表中的name == xxx 的一行数据
(3)Update
ovsdb-client transact '[“Open_vSwitch”,{“op”:“update”,“table”:“Open_vSwitch”,“where”:[[“name”,"
",“xxx”]],“row”:{“name”:“sss”}}]’//更新数据,这里会将row中原来的内容全部替换成现在row中指定的内容。
(4)Delete
ovsdb-client transact ‘[“Open_vSwitch”,{“op”:“delete”,“table”:“Open_vSwitch”,“where”:[[“name”,"",“xxx”]]}]’ //删除一行与where查询所匹配的内容
(5)wait (和select差不多,返回rows指定的结果集)
ovsdb-client transact '[“Open_vSwitch”,{“op”:“wait”,“table”:“Baicells_Vrf”,“where”:[],“columns”:[“name”],“until”:"
",“rows”:[]}]’
(6)Mutate
ovsdb-client transact -v ‘[“Open_vSwitch”,{“op”:“insert”,“table”:“Baicells_Route”,“row”:{“table”:“xxxx”},“uuid-name”:“newrow”},{“op”:“mutate”,“table”:“Baicells_Vrf”,“where”:[["_uuid","",[“uuid”,“59b79a1d-20d1-47eb-a849-0ce5fb0bc24a”]]],“mutations”:[[“route”,“insert”,[“set”,[[“named-uuid”,“newrow”]]]]]}]’ //通常用来改变一个与where条件匹配的存在的行的列的内容。
(7)Commit
ovsdb-client transact ‘[“Open_vSwitch”,{“op”:“commit”,“durable”:“true”}]’//在客户端收到应答请求前,将事务保存到磁盘上。
(8)Abort
Ovsdb-client transact ‘[“Open_vSwitch”,{“op”:“abort”}]’//对测试有用,事务终止时以错误返回
(9)Comment
“Ovsdb-client transact ‘[“Open_vSwitch”,{“op”:“comment”,“comment”:“ovs-vsctl (invoked by -bash): ovs-vsctl add-br br6”}]’//向数据库管理员提供注释信息
(10)Assert
“Ovsdb-client transact ‘[“Open_vSwitch”,{“op”:“assert”,“lock”:“xxx”}]’//客户端没有名为xxx锁,则终止事务
Ps:这里说明一下不是根表,在插入后会对数据进行回收处理,因此要插入数据一般要将表设置为根表。如果根表有引用其他的表的列,在对其他表进行插入的同时,要更新根表的内容有两种方法:(1)具体操作为insert引用表后,update根表(注:update 根表的时候需要知道原来列中的所有数据,不然,插入的这条数据会覆盖上一条数据)。(2)insert引用表后,mutate根表直接插入根表,不需要知道根表的引用列的数据。(两种方法必须在同一个事务中,指出uuid-name,对数据进行更新操作)。
例:
ovsdb-client transact -v '[“Open_vSwitch”,{“op”:“insert”,“table”:“Baicells_Route”,“row”:{},“uuid-name”:“newrow”},{“op”:“update”,“table”:“Baicells_Vrf”,“where”:[[”_uuid”,"
",[“uuid”,“59b79a1d-20d1-47eb-a849-0ce5fb0bc24a”]]],“row”:{“route”:[“named-uuid”,“newrow”]}}]’
ovsdb-client transact -v ‘[“Open_vSwitch”,{“op”:“insert”,“table”:“Baicells_Route”,“row”:{“table”:“xxxx”},“uuid-name”:“newrow”},{“op”:“mutate”,“table”:“Baicells_Vrf”,“where”:[["_uuid","==",[“uuid”,“59b79a1d-20d1-47eb-a849-0ce5fb0bc24a”]]],“mutations”:[[“route”,“insert”,[“set”,[[“named-uuid”,“newrow”]]]]]}]’

4.list-tables 连接到服务器,检索数据库的schema,并打印列出数据库中每个表的名称
5.list-columns 连接到服务器,检索数据库的schema,并打印列出每个列的名称和类型的表。如果指定了表,则只列出该表中的列;否则,表将包含所有表中的列。
6.dump 连接到服务器,检索数据库中的所有数据,并将其作为一系列表输出到stdout上。如果指定了表,则只检索该表。如果至少指定了一列,则只检索这些列.(获取表的内容)
7.monitor 实时监控一个表
8.monitor-cond 连接到服务器并监视与数据库中的表中条件匹配的行内容。

Ovsdb-client 选项
Output Formatting Options:
1.-f 表输出格式,分别有一下格式:
(1)table 默认以表格形式打印.
(2)list 每行一列
(3)html 以html格式形式打印
(4)csv 以RFC 4180定义的分隔打印.
(5)json 以RFC 4627定义的json格式打印.
2. -d 单元格输出格式
3.–no−headings 不输出表的第一行
4.–pretty 使用缩进打印
5.–bare 等于 −−format=list −−data=bare −−no−headings.
6.–timestamp 向monitor或者monitor-cond中添加时间戳

Logging Options:
1.-v 将日志模式设置为dbg
2.−−log−file 将日志写入文件

Other Options
1.−h 向控制台打印简单的帮助消息 --help
2.−V 向控制台打印版本信息−−version

 类似资料: