准备环境时,首先确认目标主机的基本网络与账号权限,建议开启SSH并使用密钥认证。常用工具包括:Python(含paramiko)、Ansible、纯Shell脚本与cron。如果是批量管理,优先部署Ansible控制节点并在被控机上保证Python可用。
检查SSH连通性、端口、时区与时间同步(ntp/chrony)、防火墙规则(iptables/nftables)与主机名解析。配置统一的监控和日志上报渠道。
ssh -i /path/to/key root@server-ip;ansible all -m ping -i hosts.ini 用于连通性验证。
确认台湾机房的公网出口策略与带宽限制,避免大量并发拉取或更新导致网络抖动。
常见脚本类型包括:系统巡检(磁盘、CPU、内存、进程)、软件部署(nginx、mysql)、配置模板替换、备份与恢复、日志轮转与归档。可用Shell脚本实现轻量任务,用Ansible实现幂等化与批量操作。
#!/bin/bash
echo "disk:"; df -h
echo "mem:"; free -m
echo "top:"; ps aux --sort=-%cpu | head -n 10
- hosts: all
tasks:
- name: ensure nginx installed
apt:
name: nginx
state: present
脚本要加超时与错误处理,输出结构化日志(JSON或key=value)便于上报和解析。
部署脚本可以通过Git拉取、Ansible拷贝或SCP上传。定时执行通常使用crontab或systemd timer。建议将脚本放在统一目录(/opt/ops/scripts),并使用日志目录(/var/log/ops)集中存储执行记录。
1) 使用Ansible将脚本分发到目标机;2) 设置sudo与执行权限;3) 配置cron或systemd定时器;4) 配合日志轮转与告警。
*/15 * * * * /opt/ops/scripts/check_disk.sh >> /var/log/ops/check_disk.log 2>&1
在台湾机房要考虑时区(Asia/Taipei),crontab以主机时间为准,避免跨地区时间差引起的执行偏差。
常见故障包括脚本超时、权限拒绝、网络不通、依赖缺失与环境差异。定位步骤:查看脚本日志→检查系统日志(/var/log/syslog或journalctl)→使用SSH手动复现→逐步排查依赖版本与环境变量。
脚本应输出详细错误码与上下文,重要错误通过邮件/钉钉/Slack告警,并结合Prometheus或Zabbix做指标采集。
tail -n 200 /var/log/ops/check_disk.log
journalctl -u your-service -n 200
ss -tunlp | grep :22
对网络波动引起的问题,建议脚本内实现重试与指数退避,避免短时间内大量告警打扰运维。
安全要点包括:使用SSH密钥并禁用密码登录、最小权限原则(使用非root账号与sudo策略)、对敏感信息采用Vault或环境变量加密存储、脚本签名与校验(sha256),以及对外网访问进行白名单控制。
建议使用HashiCorp Vault、Ansible Vault或云厂商的秘钥服务来集中管理密码与证书,不在脚本中明文保存凭据。
chown root:ops /opt/ops/scripts/*.sh
chmod 750 /opt/ops/scripts/*.sh
visudo 添加特定命令免密码sudo
定期审计执行记录与sudo日志,限定运行脚本的IP与时间范围,并对关键操作加入人工审批流程。