变量与基础数据类型
运维脚本中,变量用于保存主机名、IP、端口、阈值等运行时数据。Python 是动态类型语言:变量无需声明类型,但应清楚每个值代表什么。
基本类型速览
| 类型 | 示例 | 运维场景 |
|---|---|---|
str | "192.168.1.10" | IP、域名、路径 |
int | 8080 | 端口、PID、磁盘 GB |
float | 85.6 | CPU/内存使用率 |
bool | True / False | 健康检查结果 |
hostname = "web-01"
ip = "10.0.0.5"
port = 443
cpu_percent = 72.5
is_healthy = cpu_percent < 80
print(type(hostname)) # <class 'str'>
print(type(port)) # <class 'int'>
字符串格式化
运维输出常需拼接主机、指标与状态,推荐 f-string(Python 3.6+):
host = "db-01"
disk_used_gb = 128
disk_total_gb = 256
usage = disk_used_gb / disk_total_gb * 100
# 保留一位小数,便于告警文案
msg = f"[{host}] 磁盘 {disk_used_gb}/{disk_total_gb} GB,使用率 {usage:.1f}%"
print(msg)
# [db-01] 磁盘 128/256 GB,使用率 50.0%
多行告警模板:
alert = f"""
主机: {host}
指标: disk_usage
当前值: {usage:.1f}%
阈值: 80%
"""
print(alert.strip())
类型转换
从配置文件或命令行读入的值通常是字符串,运算前需显式转换:
# 模拟从 CSV 或 API 读到的字符串
raw_port = "8080"
raw_threshold = "85.5"
port = int(raw_port)
threshold = float(raw_threshold)
# 转换失败会抛 ValueError,生产脚本应捕获
try:
bad = int("abc")
except ValueError as e:
print(f"端口格式错误: {e}")
布尔转换注意:bool("") 为 False,bool("0") 为 True(非空字符串即为真)。
常量与命名
# 模块级常量:全大写 + 下划线
DEFAULT_SSH_PORT = 22
MAX_RETRY = 3
LOG_DIR = "/var/log/nginx"
# 变量:小写 + 下划线(snake_case)
remote_user = "deploy"
retry_count = 0
避免使用单字母变量(循环变量 i 除外),ip_list 比 x 更易维护。
实战:解析简单键值配置
# 模拟一行 env 风格配置
line = "APP_ENV=production"
key, _, value = line.partition("=")
print(key, value) # APP_ENV production
# 数字阈值
max_connections = int("1000")
enabled = value == "production"
print(f"环境={value}, 生产模式={enabled}, 最大连接={max_connections}")
小结
- 用 f-string 生成日志与告警文本
- 外部输入(文件、API、命令行)先当字符串,再按需
int()/float() - 常量与变量命名区分清晰,便于 Code Review
下一章学习 列表与元组,批量管理 IP 与命令结果。