想要用Python实现自动化运维,得先学会这些。。
print("磁盘:%s 分区格式:%s"%(i.device,i.fstype))print("使用了:%sM,空闲:%sM,总共:%sM,使用率%s%%" %(disk_use.used/1024/1024,disk_use.free/1024/1024,disk_use.total/1024/1024,disk_use.percent))
·
一、要学习的内容
1. Python基础
- 掌握Python语言的基本语法和结构。
- 学习Python的文件操作、异常处理和模块化编程。
2. 网络通信
- 学习使用Python的
socket模块进行网络通信。 - 掌握SSH协议,使用
paramiko库进行远程服务器连接和命令执行。
3. 进程和线程
- 学习Python的
multiprocessing和threading模块,实现多进程和多线程编程,提高运维任务的并行处理能力。
4. 定时任务
- 学习Python的
APScheduler库,用于定时执行运维任务。
5. 远程命令执行
- 深入学习
paramiko库,实现SSH连接和远程命令执行。
6. 配置管理
- 学习使用
Ansible进行自动化配置管理。
7. 日志管理
- 学习Python的日志模块,实现日志的记录和管理。
8. 文档生成
- 学习使用
Sphinx和MkDocs生成自动化文档。
9. Docker和Kubernetes
- 学习Docker容器技术和Kubernetes集群管理,使用Python脚本自动化部署容器和集群。
二、简单介绍几个自动化运维的小案例
1. 磁盘空间监控
#coding:utf-8
import psutil
disk = psutil.disk_partitions()
for i in disk:
print("磁盘:%s 分区格式:%s"%(i.device,i.fstype))
disk_use = psutil.disk_usage(i.mountpoint)
print("使用了:%sM,空闲:%sM,总共:%sM,使用率%s%%" %(disk_use.used/1024/1024,disk_use.free/1024/1024,disk_use.total/1024/1024,disk_use.percent))
2. 网络流量采集
#coding:utf-8
import psutil
net = psutil.net_io_counters()
bytes_sent = '{0:.2f} Mb'.format(net.bytes_recv / 1024 / 1024)
bytes_rcvd = '{0:.2f} Mb'.format(net.bytes_sent / 1024 / 1024)
print("网卡接收流量 %s 网卡发送流量 %s" % (bytes_rcvd, bytes_sent))
3. 远程服务器管理
#coding:utf-8
import paramiko
# 创建SSH对象
ssh = paramiko.SSHClient()
# 允许连接不在know_hosts文件中的主机
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
# 连接服务器
ssh.connect(hostname='192.168.1.22', port=22, username='root', password='admin123')
# 执行命令
stdin, stdout, stderr = ssh.exec_command('ls')
# 获取命令结果
result = stdout.read()
# 关闭连接
ssh.close()
4. SFTP文件传输
#coding:utf-8
import paramiko
t = paramiko.Transport(('192.168.1.22',22))
t.connect(username='root',password='admin123')
sftp = paramiko.SFTPClient.from_transport(t)
sftp.put('C:\Users\yunwei\Desktop\error.jpg','/home/yunwei/error.jpg')
# 将error.jpg上传到服务器/home/yangmv目录
sftp.get('/home/yunwei/sftp.txt','C:\Users\yunwei\Desktop\sftp.txt')
# 将sftp.txt下载到本机桌面
t.close()
5. 批量主机命令执行
#coding:utf-8
import paramiko
port=22
username="root"
file=open("ip.list")
for line in file:
hostname=str(line.split("\t")[0])
password=str(line.split("\t")[4]).strip()
print "##########################",hostname,"########################"
s=paramiko.SSHClient()
s.set_missing_host_key_policy(paramiko.AutoAddPolicy())
s.connect(hostname,port,username,password)
stdin,stdout,sterr=s.exec_command("df -Th")
print stdout.read()
s.close()
file.close()
通过上述案例,可以看到Python在自动化运维中的强大能力。掌握这些技能和工具,可以大大提高运维工作的效率和准确性。
更多推荐




所有评论(0)