自动化运维用shell还是python_自动化运维中python常用模块

引言

在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

#查看进程状态

>>> 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

加关注了解更多运维知识

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值