日常工作中需要远程监控多个服务器状态和数据库是否同步,手动使用CRT查询的话太过麻烦了,切换数据库查询同步也很蛋疼,这种重复操作果然还是应该交给python
配置文件
使用列表存储各地服务器和数据库连接信息
config = [{
"server_name": "项目1",
"server_1": {
"name": "服务器1",
"host": "1.1.1.1",
"port": 2022,
"user": "xxx",
"passwd": "xxx"
},
"server_2": {
"name": "服务器2",
"host": "2.2.2.2",
"port": 2022,
"user": "xxx",
"passwd": "xxx"
},
"db_1": {
"ssh": {
"host": "5.5.5.5",
"port": 2022,
"user": "xxx",
"passwd": "xxx"
},
"name": "数据库1",
"host": "3.3.3.3",
"port": 3306,
"db": "db_name1",
"user": "xxx",
"passwd": "xxx"
},
"db_2": {
"ssh": {
"host": "5.5.5.5",
"port": 2022,
"user": "xxx",
"passwd": "xxx"
},
"name": "数据库2",
"host": "4.4.4.4",
"port": 3306,
"db": "db_name1",
"user": "xxx",
"passwd": "xxx"
},
},]
数据库连接方法
重点:部分数据库需要使用跳板机连接,需要使用sshtunnel模块。数据库通过ssh通道连接成功以后,ssh通道没有关闭,主线程会阻塞,而且ssh通道只能开启一个,通过生成多个对象来开启多个ssh会报错,想像以前那样把mysql封装成一个工具类的时候踩了一地的坑,干脆写成一个方法,连接数据库之后立马执行sql语句,然后关闭连接关闭ssh通道。