python 自动化运维 教程 python自动化运维常用模块_python paramiko模块下载


引言

在Python自动化运维中,常会用到psutil模块,除了用来系统监控,也封装了linux 下 的大部分shell命令,本文将为大家分享Python自动化运维中常用到的几个模块与使用。

Python模块之Paramiko

1、介绍
paramiko 遵循SSH2协议,支持以加密和认证的方式,进行远程服务器的连接,可以实 现远程文件的上传,下载或通过ssh远程执行命令。

使用pip命令进行安装:


pip install paramiko


3、使用paramiko上传文件夹


#cat paramikosend.py     
import paramiko,datetime,os    #导入包
 hostname = 'IP1'    #上传文件到该服务器
 username = 'root'
 password = '123456'
 port = 22
 local_dir = '/root/paramiko'     #本地路径
 remote_dir = '/root/paramiko'   #远程路径
 try:
        t=paramiko.Transport((hostname,port))
        t.connect(username=username,password=password)
        sftp = paramiko.SFTPClient.from_transport(t)
        files = os.listdir(local_dir)    #获取文件目录内容
        for f in files:
            sftp.put(os.path.join(local_dir,f),os.path.join(remote_dir,f)) 
            #上传文件,下载使用sftp.get
        t.close()
 except Exception as e:
        print ("connect error!:",e)


4、使用paramiko执行命令


# cat paramikocommand.py1   
#!/usr/bin/python
 import paramiko
 hostname = ' IP1'      #远程登录服务器IP
 username = 'root'     #用户名
 password = '123456'    #密码
 port = 22                      #端口


 ssh = paramiko.SSHClient()     #实例化对象
 ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())  
 #允许连接不在 know_hosts文件中的机器
 ssh.connect(hostname=hostname,port=port,username=username,password= password)
 stdin, stdout, stderr = ssh.exec_command("ls -lrt")   #执行命令
 print stdout.readlines()     #打印返回所有结果
 ssh.close()


Python模块之Psutil

1、介绍
psutil是一个跨平台库,能够轻松实现获取系统运行的进程和系统利用率(包括CPU、 内存、磁盘、网络等)信息,它主要应用于系统监控。

2、安装
使用pip命令进行安装:


pip install psutil


3、获取cpu、磁盘等信息


import Psutilimport Psutil
#查看cpu所有信息
>>> psutil.cpu_times()
scputimes(user=11677.09, nice=57.93, system=148675.58, idle=2167147.79,  iowait=260828.48, irq=7876.28, softirq=0.0, steal=3694.59, guest=0.0,  guest_nice=0.0)


#获取磁盘完整信息
>>>psutil.disk_partitions()
>>>[sdiskpart(device='C:', mountpoint='C:', fstype='NTFS',  opts='rw,fixed'),sdiskpart(device='D:', mountpoint='D:', fstype='NTFS',  opts='rw,fixed'), sdiskpart(device='E:', mountpoint='E:', fstype='NTFS',  opts='rw,fixed'), sdiskpart(device='F:', mountpoint='F:', fstype='NTFS',  opts='rw,fixed'), sdiskpart(device='G:', mountpoint='G:', fstype='NTFS',  opts='rw,fixed')]


4、查看系统进程

#查看 系统所有进程ID


>>>psutil.pids()
#查看单个进程详细情况
>>> p = psutil.Process(372)#进程ID
>>> p.name
<bound method Process.name of psutil.Process(pid=372, name='smss.exe',  started='08:26:07')>


#查看进程状态
>>> p.status()
'running'
#######进程其他信息获取方法#######
p.name()          #进程名
p.exe()             #进程的bin路径
p.cwd()            #进程的工作目录绝对路径
p.status()         #进程状态
p.create_time()      #进程创建时间
p.uids()           #进程uid信息
p.gids()           #进程的gid信息
p.cpu_times()     #进程的cpu时间信息,包括user,system两个cpu信息
p.cpu_affinity()   #get进程cpu亲和度,如果要设置cpu亲和度,将cpu号作为参考就 好
p.memory_percent()    #进程内存利用率
p.memory_info()          #进程内存rss,vms信息
p.io_counters()            #进程的IO信息,包括读写IO数字及参数
p.connectios()            #返回进程列表
p.num_threads()         #进程开启的线程数


Python模块之Pymssql

1、介绍
python连接sql server数据库,对数据库进行增删查改操作。

2、安装
使用pip命令进行安装:


pip install pymssql


3、使用pymssql 进行数据库查询


#!/usr/bin/python
# -*- coding: utf-8 -*-
##"获取虚拟化主机品牌型号内存等信息"
improt pymssql
class mysql:
def__init__(self,server,user,password,database):
    self.server = server
    self.user = user
    self.password = password
    self.database = database
 def conn(self,server,user,password,database):
    try:
         with pymssql.connect(self.server, self.user, self.password,self.database,login_timeout=2) as conn:
               # with conn.cursor(as_dict=True) as cursor:                        
               cursor=conn.cursor()
               cursor.execute('SELECT DNS_NAME,IP_ADDRESS,DATACENTER_ID FROM VPX_HOST')
               #游标每次只能执行一条sql,多条sql需要多次实例化执行    
                    result = cursor.fetchall()
                    for row in result:
                        print (row)
               #with conn.cursor(as_dict=True) as cursor:                        
               cursor=conn.cursor()
               cursor.execute('SELECT * FROM VPXV_COMPUTE_RESOURCE')
               nextResult=cursor.fetchall()
               for row in nextResult:
                   print (row)
         except Exception as e:
               print ("db connect error:",e)
     server = "IP2"
     user = "XXXX"
     password = "XXXX"
     database = "szvcenterdb02"
     exec_sql=msql(server,user,password,database)
     exec_sql.conn(server,user,password,database)


Python模块之多线程threading

1、介绍

多线程类似于同时执行多个不同程序。

2、安装
内置模块无需安装

3、创建多线程


#!/usr/bin/python
# -*- coding: UTF-8 -*-
import threading
import time


#为线程定义一个函数
def print_time(threadName, delay):
    count = 0
    while count < 5:
        time.sleep(delay)
        count += 1
        print ("%s:%s" % (threadName, time.ctime(time.time())))
# 创建两个线程
try:
    a=threading.Thread(target=print_time, args=("Thread-1", 2,))
    b=threading.Thread(target=print_time, args=("Thread-2", 4,))
    threads=[]
    threads.append(a)
    a.setDaemon(True)
    a.start()
    b.start()
    for t in threads:
     t.join()
except:
    print("Error:unable to start thread")

while 1:
    pass


END