一、要学习的内容

1. Python基础

  • 掌握Python语言的基本语法和结构。
  • 学习Python的文件操作、异常处理和模块化编程。

2. 网络通信

  • 学习使用Python的socket模块进行网络通信。
  • 掌握SSH协议,使用paramiko库进行远程服务器连接和命令执行。

3. 进程和线程

  • 学习Python的multiprocessingthreading模块,实现多进程和多线程编程,提高运维任务的并行处理能力。

4. 定时任务

  • 学习Python的APScheduler库,用于定时执行运维任务。

5. 远程命令执行

  • 深入学习paramiko库,实现SSH连接和远程命令执行。

6. 配置管理

  • 学习使用Ansible进行自动化配置管理。

7. 日志管理

  • 学习Python的日志模块,实现日志的记录和管理。

8. 文档生成

  • 学习使用SphinxMkDocs生成自动化文档。

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在自动化运维中的强大能力。掌握这些技能和工具,可以大大提高运维工作的效率和准确性。

Logo

一站式 AI 云服务平台

更多推荐