用Python写运维脚本时,经常需要执行linux shell的命令,Python中的commands模块专门用于调用Linux shell命令,并返回状态和结果,下面是commands模块的3个主要函数:

1. commands.getoutput('shell command')

执行shell命令,返回结果(string类型)

>>> commands.getoutput('pwd')

'/home/oracle'

2. commands.getstatus('file')

该函数已被python丢弃,不建议使用,它返回 ls -ld file 的结果(String)(返回结果太奇怪了,难怪被丢弃)

>>> commands.getstatus('admin.tar')

'-rw-rw-r-- 1 oracle oracle 829440 Jan 29 10:36 admin.tar'

3. commands.getstatusoutput('shell command')

执行shell命令, 返回两个元素的元组tuple(status, result),status为int类型,result为string类型。

cmd的执行方式是{ cmd ; } 2>&1, 故返回结果包含标准输出和标准错误.

>>> commands.getstatusoutput('pwd')

(0, '/home/oracle')

下面的一个脚本利用commands模块检测磁盘使用率,标识出大于10%的磁盘(百分比可根据实际情况调整,一般设为90%,本例为了更好的说明情况,设为10%):

import commands

threshold = 10

flag = False

title=commands.getoutput("df -h|head -1")

'''

Check sda disk space usage like below format:

/dev/sda2 20G 2.3G 17G 13% /

/dev/sda6 20G 306M 19G 2% /var

/dev/sda3 49G 2.8G 44G 7% /home

/dev/sda5 49G 4.5G 42G 10% /opt

/dev/sda1 194M 12M 172M 7% /boot

'''

chkDiskList=commands.getoutput("df -h|grep sda").split('\n')

usedPercents=commands.getoutput("df -h|grep sda|awk '{print $5}'|grep -Eo '[0-9]+'").split('\n')

for i in range(0,len(usedPercents)):

if int(usedPercents[i]) >= threshold:

chkDiskList[i] += ' ----Caution!!! space usage >= ' + str(threshold)

flag = True

'''

Check disk space usage like below format:

/dev/mapper/backup-backup_lv

751G 14G 699G 2% /backup

/dev/mapper/data-data_lv

751G 172G 540G 25% /data

'''

chkDiskList_2=commands.getoutput("df -h|grep -v sda|grep -v tmp|grep -v system").split('\n')

usedPercents_2=commands.getoutput("df -h|grep -v map|grep -v sda|grep -v tmp|grep -v system|awk '{print $4}'|grep -Eo '[0-9]+'").split('\n')

for i in range(0,len(usedPercents_2)):

if int(usedPercents_2[i]) >= threshold:

chkDiskList_2[i*2 + 1] += ' ----Caution!!! space usage >= ' + str(threshold)

flag = True

if flag == True:

#combine tile, chkDiskList, chkDisklist_2

result = [title,]

result.extend(chkDiskList)

result.extend(chkDiskList_2)

for line in result:

print line

假设当前的磁盘使用率如下:

[oracle@lx200 ~/admin/python]$ df -h

Filesystem Size Used Avail Use% Mounted on

/dev/sda2 20G 2.3G 17G 13% /

/dev/sda6 20G 306M 19G 2% /var

/dev/sda3 49G 2.8G 44G 7% /home

/dev/sda5 49G 4.5G 42G 10% /opt

/dev/sda1 194M 12M 172M 7% /boot

tmpfs 18G 0 18G 0% /dev/shm

/dev/mapper/backup-backup_lv

751G 14G 699G 2% /backup

/dev/mapper/data-data_lv

751G 174G 539G 25% /data

执行该脚本后的结果如下:

Filesystem Size Used Avail Use% Mounted on

/dev/sda2 20G 2.3G 17G 13% / ----Caution!!! space usage >= 10

/dev/sda6 20G 306M 19G 2% /var

/dev/sda3 49G 2.8G 44G 7% /home

/dev/sda5 49G 4.5G 42G 10% /opt ----Caution!!! space usage >= 10

/dev/sda1 194M 12M 172M 7% /boot

/dev/mapper/backup-backup_lv

751G 14G 699G 2% /backup

/dev/mapper/data-data_lv

751G 174G 539G 25% /data

python commands执行不连续_[Python] 利用commands模块执行Linux shell命令相关推荐

  1. python commands用法_python之commands模块(执行Linux Shell命令)

    commands模块 用于执行Linux shell命令,要获得shell命令的输出只需要在后面参数写入('命令')就可以了. 需要得到命令执行的状态则需要判断$?的值, 在Python中有一个模块c ...

  2. java 利用ganymed-ssh2 远程执行linux shell 命令

    早期的ganymed-ssh2包也可以实现远程调研linux shell 命令,但是这个包最新版本是2014年之后,就没有更新了,发现linux 操作系统安装 open-ssh 8.5及更高级版本,就 ...

  3. 利用python查询电脑配置_干货|利用Python将地址转换为经纬度坐标

    本文主要讲述利用Python将文本格式的地址转换为数字格式的经纬度坐标数据,主要步骤有: 注册高德地图API账号,申请Web服务的Key 了解并测试地理编码API服务 利用Python实现地址转坐标 ...

  4. python的论文图表_如何利用Python绘制学术论文图表方法

    论文中图表形式多样,常用的处理工具有excel.MATLAB以及Python等,excel自处理的方法有两个缺陷: 1.当数据较多时,容易出现excel"翻白眼"的现象: 2.需要 ...

  5. python 正态化_#Python数据分析/笔记 - 准备工作

    Chapter-I 准备工作 1. 什么类型的数据 结构化数据:表格性数据.多维数组.表数据(数据库).时间序列等 现实生活中,很多数据需要转换成一种更适合分析和建模的结构化形式,才容易被分析和解读. ...

  6. python入门爬虫案例_[Python入门学习]-爬虫项目案例讲解

    一.速成HTML html:超文本标记语言. 文档的第一行就表明这是一个html文档.根标签是html,然后下面有head和body,head里面是一些头信息,body就是我们想把页面渲染成什么样. ...

  7. python多进程编程实例_[python] Python多进程编程技术实例分析

    这篇文章主要介绍了Python多进程编程技术,包括了线程.队列.同步等概念及相关的技巧总结,需要的朋友可以参考下 本文以实例形式分析了Python多进程编程技术,有助于进一步Python程序设计技巧. ...

  8. python实现第三方验证码获取_python利用第三方模块,发送短信验证码(测试案例)...

    今天学到个利用python第三方,发送短信验证码的代码,速实现一遍,短信立即收到,果断记录在案! 环境:虚拟机上centos7平台,python2.7版本: 第三方服务提供商是:云通讯官网:www.y ...

  9. python输出文本居中_#python PIL ImageDraw text 文本居中#

    python pip pil有什么东西 你所问的问题实是属1.先参考[教程]Python中的内置的和方的模块搞懂PIL是属于第三方Python模块2.再参考:[待完善][总结]Python安装第三方的 ...

最新文章

  1. cityhash 算法的使用
  2. C#之自己定义的implicit和explicit转换
  3. c语言接受socket发送尾部有乱码,C语言socket编程,服务器和一个客户端连接时,服务器能正常收到信息,2个以上就出现BUG了...
  4. redis(2)--数据结构与对象
  5. bootstrap中的模态框(modal,弹出层)
  6. 【Kafka】kafka 客户端 控制台 flink 都无法消费的情况
  7. 用HTML+CSS画出一个同心圆
  8. 温馨剪纸风三八妇女节PSD分层海报模板
  9. CDH5.X完全卸载步骤
  10. 网络协议从入门到底层原理(5)传输层(UDP、TCP - 可靠传输、流量控制、拥塞控制、建立连接、释放连接)
  11. Linux之mkdir命令
  12. python 两个变量同时循环_python基础篇(子非鱼)
  13. 机器学习自学札记(1)
  14. 15串行加法器和并行加法器原理
  15. Excel将两个图片合并为一张
  16. 「软件架构」InfoQ 软件架构和设计趋势报告2020年4月
  17. Linux 怎么防止 ssh 被暴力破解
  18. 奥迪Q5更换初装变速箱油教程
  19. 多平台Avalonia UI框架的主题化和本地化功能
  20. 计算机网络之简单概念

热门文章

  1. pyecharts绘制地铁图_安利一个绘制地铁线路KMZ的利器 号称国产谷歌地球
  2. 反应特别慢_孩子反应总是很迟钝?家长多注意一点孩子的兴趣培养
  3. postgresql 参数替换 游标_解决postgresql和oracle如何把游标cursor数据存到数组array
  4. 触发器如何通知websocket_「Web应用架构」如何扩展WebSockets
  5. 穿越障碍物JAVA编程_JAVA 基础编程练习题1 【程序 1 不死神兔】
  6. java apache.poi_Java利用apache的POI操作Excel
  7. C++标准转换运算符:reinterpret_cast
  8. 力扣(LeetCode)46
  9. Linux学习总结(六十六)打印一串数字的脚本
  10. Mac系统升级node