python开发F5相关功能
一、安装依赖
pip install f5-sdk
pip install urllib3
二、相关代码,参考https://f5-sdk.readthedocs.io/
1、创建、操作pool
from f5.bigip import ManagementRoot # Connect to the BigIP mgmt = ManagementRoot("bigip.example.com", "admin", "somepassword") # Get a list of all pools on the BigIP and print their names and their # members' names pools = mgmt.tm.ltm.pools.get_collection() for pool in pools: print pool.name for member in pool.members_s.get_collection(): print member.name # Create a new pool on the BIG-IP mypool = mgmt.tm.ltm.pools.pool.create(name='mypool', partition='Common') # Load an existing pool and update its description pool_a = mgmt.tm.ltm.pools.pool.load(name='mypool', partition='Common') pool_a.description = "New description" pool_a.update() # Delete a pool if it exists if mgmt.tm.ltm.pools.pool.exists(name='mypool', partition='Common'): pool_b = mgmt.tm.ltm.pools.pool.load(name='mypool', partition='Common') pool_b.delete()
2、创建、操作member
members = pool_a.members_s member = pool_a.members_s.members # 创建 m1 = pool_a.members_s.members.create(partition='Common', name='192.168.101.50:80') m2 = pool_a.members_s.members.create(partition='Common', name='192.168.101.51:80') # load the pool members m1 = pool_a.members_s.members.load(partition='Common', name='192.168.101.50:80') m2 = pool_a.members_s.members.load(partition='Common', name='192.168.101.50:80') # Get all of the pool members for pool_1 and print their names for member in members: print member.name # Delete our pool member m1 m1.delete()
3、创建、操作virtual server(VS)
# 创建 try: mgmt = ManagementRoot("192.168.10.10", "admin", "admin") vs = mgmt.tm.ltm.virtuals.virtual.create( name='hn_vs3', partition='Common', destination='192.168.10.122:67', pool='mypool1', source='0.0.0.0/0' ) print vs.raw except Exception as e: if isinstance(e, iControlUnexpectedHTTPError): text = json.loads(e.response.text) response['meaasge'] = text['message'] else: response['meaasge'] = e # 操作 response = {} try: mgmt = ManagementRoot("192.168.10.10", "admin", "admin") vs = mgmt.tm.ltm.virtuals.virtual.load( name='vs_test1', partition='Common' ) if hasattr(vs, 'enabled'): # 禁用 vs.disabled = True else: # 启用 vs.enabled = True vs.update() except Exception as e: print e if isinstance(e, iControlUnexpectedHTTPError): text = json.loads(e.response.text) response['meaasge'] = text['message'] else: response['meaasge'] = e
注意事项:1、VS创建之后的状态与pool的状态有直接关系。
2、pool创建之后的状态与member和Health Monitors有关。
3、错误处理,如果错误异常类型为icontrol.exceptions.iControlUnexpectedHTTPError时,需要特殊处理取得message信息。
text = json.loads(e.response.text) message = text['message']
4、状态为启动时,属性enabled为True,并没有disabled属性。为禁用时同理。
5、想要打印出pool、member、vs的详细信息,可以使用raw属性。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 上周热点回顾(3.3-3.9)
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具