本人萌新,发文章一是为了记录自己写的东西,二是为了学习,同时希望能够帮助别人。语法什么的自己觉得也很low,大佬们不喜勿喷。
之前提到过os.system可以直接执行shell命令,但是无法获取到结果。
result = os.popen('ps -aux')
res = result.read()
for line in res.splitlines():
print line
使用os.popen可以获取到结果,我使用的是这种方法。
使用commands,不过这种方法在python3中被舍弃了,使用subprocess替代
import commands
result = commands.getoutput('cmd') #只返回执行的结果, 忽略返回值.
result = commands.getstatus('cmd') #返回ls -ld file执行的结果.
result = commands.getstatusoutput('cmd')
#用os.popen()执行命令cmd, 然后返回两个元素的元组(status, result). cmd执行的方式是{ cmd ; }2>&1, 这样返回结果里面就会包含标准输出和标准错误.
使用内置模块subprocess
详细的解释点这里
# /usr/bin/python
# -*- coding: UTF-8 -*-
import subprocess
group_list = subprocess.Popen("ip a", shell=True)
print(group_list.stdout.read())
在使用subprocess.run和subprocess.call的时候提示我这个模块没有这个元素。。。求大佬帮助
考虑到了分片,要将所有的加在一起。shell的返回结果是这样的,我需要将第六列相加。由于不会(尴尬,不会你写什么文章)。我直接使用shell的awk获取的最后的值。求大佬指点。。。怎么用python写。
awk '{#print$6}' | awk '{number+=$1}END{#print number}'
累死了,自己试吧(嘿嘿)
# /usr/bin/python
# -*- coding: UTF-8 -*-
import os
CURL_ADDRESS = 'https://qyapi.weixin.qq.com/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
THRESHOLD = 100
list_1 = []
list_2 = []
def main():
res = result()
get_result_number(res)
def result():
result = os.popen("/opt/kafka/default/bin/kafka-consumer-groups-scram.sh --list --bootstrap-server a02.firedata.hadoop.datanode:9092 --command-config /opt/kafka/default/config/consumer-scram.properties | grep -v '^anonymous'")
res = result.read()
return res
def get_group_number(number):
group_number = os.popen(
"/opt/kafka/default/bin/kafka-consumer-groups-scram.sh --describe --bootstrap-server a02.firedata.hadoop.datanode:9092 --group" + " " + number + " " + "--command-config /opt/kafka/default/config/consumer-scram.properties | awk '{#print$6}' | awk '{number+=$1}END{#print number}'")
return group_number
def get_markdown_content_1(number_1):
markdown_content_1 = ">服务名称:""" + str(number_1) + "\\n>未处理消息数:" + str(x) + "\\n"
return markdown_content_1
def curl_(markdown_content):
os.system("curl" " " + CURL_ADDRESS + " ""-H 'Content-Type: application/json' -d '{\"msgtype\": \"markdown\",\"markdown\": {\"content\": \"kafka未处理队列超出预定值,请注意。\n" + markdown_content + "\"'")
def get_result_number(res):
markdown_content = ''
for i in res.splitlines():
list_1.append(i)
j = len(list_1)
for k in range(0, j):
number = list_1[k]
group_number = get_group_number(number)
group_number_all = group_number.read()
for x in group_number_all.splitlines():
x = int(x)
if x >= threshold:
list_2.append(x)
number_1 = list_1[k]
markdown_content_1 = get_markdown_content_1(number_1)
markdown_content = str(markdown_content) + str(markdown_content_1)
if len(list_2) > 9:
curl_(markdown_content)
markdown_content = ''
list_2 = []
if len(list_2) > 0:
curl_(markdown_content)
if __name__ == '__main__':
main()