python commands执行不连续_[Python] 利用commands模块执行Linux shell命令
用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命令相关推荐
- python commands用法_python之commands模块(执行Linux Shell命令)
commands模块 用于执行Linux shell命令,要获得shell命令的输出只需要在后面参数写入('命令')就可以了. 需要得到命令执行的状态则需要判断$?的值, 在Python中有一个模块c ...
- java 利用ganymed-ssh2 远程执行linux shell 命令
早期的ganymed-ssh2包也可以实现远程调研linux shell 命令,但是这个包最新版本是2014年之后,就没有更新了,发现linux 操作系统安装 open-ssh 8.5及更高级版本,就 ...
- 利用python查询电脑配置_干货|利用Python将地址转换为经纬度坐标
本文主要讲述利用Python将文本格式的地址转换为数字格式的经纬度坐标数据,主要步骤有: 注册高德地图API账号,申请Web服务的Key 了解并测试地理编码API服务 利用Python实现地址转坐标 ...
- python的论文图表_如何利用Python绘制学术论文图表方法
论文中图表形式多样,常用的处理工具有excel.MATLAB以及Python等,excel自处理的方法有两个缺陷: 1.当数据较多时,容易出现excel"翻白眼"的现象: 2.需要 ...
- python 正态化_#Python数据分析/笔记 - 准备工作
Chapter-I 准备工作 1. 什么类型的数据 结构化数据:表格性数据.多维数组.表数据(数据库).时间序列等 现实生活中,很多数据需要转换成一种更适合分析和建模的结构化形式,才容易被分析和解读. ...
- python入门爬虫案例_[Python入门学习]-爬虫项目案例讲解
一.速成HTML html:超文本标记语言. 文档的第一行就表明这是一个html文档.根标签是html,然后下面有head和body,head里面是一些头信息,body就是我们想把页面渲染成什么样. ...
- python多进程编程实例_[python] Python多进程编程技术实例分析
这篇文章主要介绍了Python多进程编程技术,包括了线程.队列.同步等概念及相关的技巧总结,需要的朋友可以参考下 本文以实例形式分析了Python多进程编程技术,有助于进一步Python程序设计技巧. ...
- python实现第三方验证码获取_python利用第三方模块,发送短信验证码(测试案例)...
今天学到个利用python第三方,发送短信验证码的代码,速实现一遍,短信立即收到,果断记录在案! 环境:虚拟机上centos7平台,python2.7版本: 第三方服务提供商是:云通讯官网:www.y ...
- python输出文本居中_#python PIL ImageDraw text 文本居中#
python pip pil有什么东西 你所问的问题实是属1.先参考[教程]Python中的内置的和方的模块搞懂PIL是属于第三方Python模块2.再参考:[待完善][总结]Python安装第三方的 ...
最新文章
- cityhash 算法的使用
- C#之自己定义的implicit和explicit转换
- c语言接受socket发送尾部有乱码,C语言socket编程,服务器和一个客户端连接时,服务器能正常收到信息,2个以上就出现BUG了...
- redis(2)--数据结构与对象
- bootstrap中的模态框(modal,弹出层)
- 【Kafka】kafka 客户端 控制台 flink 都无法消费的情况
- 用HTML+CSS画出一个同心圆
- 温馨剪纸风三八妇女节PSD分层海报模板
- CDH5.X完全卸载步骤
- 网络协议从入门到底层原理(5)传输层(UDP、TCP - 可靠传输、流量控制、拥塞控制、建立连接、释放连接)
- Linux之mkdir命令
- python 两个变量同时循环_python基础篇(子非鱼)
- 机器学习自学札记(1)
- 15串行加法器和并行加法器原理
- Excel将两个图片合并为一张
- 「软件架构」InfoQ 软件架构和设计趋势报告2020年4月
- Linux 怎么防止 ssh 被暴力破解
- 奥迪Q5更换初装变速箱油教程
- 多平台Avalonia UI框架的主题化和本地化功能
- 计算机网络之简单概念
热门文章
- pyecharts绘制地铁图_安利一个绘制地铁线路KMZ的利器 号称国产谷歌地球
- 反应特别慢_孩子反应总是很迟钝?家长多注意一点孩子的兴趣培养
- postgresql 参数替换 游标_解决postgresql和oracle如何把游标cursor数据存到数组array
- 触发器如何通知websocket_「Web应用架构」如何扩展WebSockets
- 穿越障碍物JAVA编程_JAVA 基础编程练习题1 【程序 1 不死神兔】
- java apache.poi_Java利用apache的POI操作Excel
- C++标准转换运算符:reinterpret_cast
- 力扣(LeetCode)46
- Linux学习总结(六十六)打印一串数字的脚本
- Mac系统升级node