3、第一个自动化脚本:Hello World脚本、连接DaVinci Config实例、执行简单配置命令
好,咱们正式开始动手了。
前面两章铺垫了不少概念,我知道你肯定手痒了。说实话,我当年学这个的时候,也是恨不得跳过所有理论直接敲代码。但别急,这一章咱们就写第一个真正的自动化脚本——一个经典的“Hello World”。
不过,这个Hello World不是打印一句话那么简单。我们要用它完成三件事:写脚本、连实例、跑命令。这三步走通了,后面的所有自动化流程就都有底了。
3.1 先搭个脚本骨架
我个人习惯,写任何自动化脚本之前,先搭一个最小的可执行框架。就像盖房子先立柱子,后面再填砖。
在DaVinci Config里,脚本本质上是一个Python文件。但注意,它运行在DaVinci自己的运行时环境里,不是直接拿Python解释器跑。所以,第一行代码通常是导入核心库:
import davinci_config as dc
嗯,就这么一行。但这一行决定了你能不能调用后面所有的API。
接下来,我们定义一个主函数。为什么用函数?因为脚本一旦复杂起来,全局变量满天飞会让人崩溃。我在项目中遇到过好几次,脚本跑着跑着变量被意外覆盖了,排查半天才发现是全局作用域的问题。所以,从一开始就养成好习惯:
def main():
print("Hello, DaVinci Config!")
if __name__ == "__main__":
main()
这个结构,说白了就是Python的标准入口写法。你把它保存成 hello_world.py,就已经是一个合法的DaVinci Config脚本了——虽然它还没连上任何实例。
3.2 连接DaVinci Config实例
脚本写好了,怎么让它跟DaVinci Config“对话”?
你需要一个连接对象。你可以把它想象成一根网线,一头插在你的脚本上,另一头插在DaVinci Config服务上。
连接方式很简单,就一行:
client = dc.connect(host="localhost", port=8080, username="admin", password="admin123")
这里有几个参数,我解释一下:
| 参数 | 说明 | 常见值 |
|---|---|---|
| host | DaVinci Config服务所在的主机地址 | localhost 或 192.168.x.x |
| port | 服务端口号 | 默认8080 |
| username | 登录用户名 | admin |
| password | 登录密码 | admin123(记得改掉) |
你想想看,如果连不上怎么办?脚本会直接抛异常。所以,我建议你加个try-except:
try:
client = dc.connect(host="localhost", port=8080, username="admin", password="admin123")
print("连接成功!")
except Exception as e:
print(f"连接失败:{e}")
3.3 执行第一条配置命令
连上了,总得干点啥吧?最简单的,就是查一下当前实例的状态。就像你刚进一个房间,先看看灯亮没亮、空调开没开。
执行命令用的是 client.execute() 方法。比如,获取系统版本信息:
result = client.execute("system info")
print(result)
返回的结果通常是一个字典或者JSON字符串。你可以把它打印出来看看,里面包含了DaVinci Config的版本号、运行时间、内存使用情况等等。
如果你想做点更“配置”相关的事,比如创建一个简单的配置项:
client.execute("config set app.name 'MyFirstApp'")
client.execute("config get app.name")
第一行设置了一个叫 app.name 的配置项,值为 MyFirstApp。第二行把它读出来,确认是否设置成功。
为什么先set再get?说白了,就是做个双重确认。我在项目中遇到过网络抖动导致set成功但实际没写进去的情况,所以养成“写后即读”的习惯,能省掉很多排查时间。
3.4 完整的Hello World脚本
好了,把上面三部分拼起来,就是一个完整的自动化脚本:
import davinci_config as dc
def main():
# 1. 连接实例
try:
client = dc.connect(host="localhost", port=8080, username="admin", password="admin123")
print("✅ 连接成功")
except Exception as e:
print(f"❌ 连接失败:{e}")
return
# 2. 执行简单命令
version = client.execute("system info")
print(f"系统版本:{version}")
# 3. 配置读写测试
client.execute("config set app.name 'HelloWorld'")
app_name = client.execute("config get app.name")
print(f"配置项 app.name = {app_name}")
print("🎉 Hello World 脚本执行完毕!")
if __name__ == "__main__":
main()
这个脚本,你保存后直接运行。如果一切正常,你会看到类似这样的输出:
✅ 连接成功
系统版本:DaVinci Config v3.2.1 (Build 20240301)
配置项 app.name = HelloWorld
🎉 Hello World 脚本执行完毕!
3.5 避坑指南
最后,分享几个我踩过的坑:
- 端口不对: 默认是8080,但有些部署环境会改成别的。先确认一下你的DaVinci Config服务到底监听在哪个端口上。
- 认证失败: 用户名密码区分大小写。我遇到过密码里有个大写字母,自己没注意,排查了半小时。
- 命令语法: DaVinci Config的命令行语法跟Linux shell不完全一样。比如设置配置项,有的版本用
=,有的用空格。先看官方文档确认一下。 - 连接超时: 如果网络延迟高,连接可能会超时。可以在
connect()里加一个timeout参数,比如timeout=10。
嗯,这一章就到这。你把这个Hello World脚本跑通了,就算是正式踏进了DaVinci Config自动化配置的大门。下一章,咱们会深入一点,讲讲怎么批量操作配置项——那才是自动化的真正威力所在。