python批量执行linux命令并写入log日志

linux下使用python运行make命令并把日志有错的路径写入.log日志中

#!/usr/bin/python
# -*- coding: UTF-8 -*-
import subprocess
import sys
import os
import time
import glob
# 所有可执行文件
# rootdir = '/home/test/'
rootdir = raw_input("可执行文件根目录:")
errorDir = '/home/'
paths = []
errorPaths = []
# 开始方法
def runPath(index):
    # 进入目录
    cd = "cd %s;" %paths[index]
    # 执行的命令行命令
    cmd = "%s make" %cd
    # 执行命令并返回执行
    p = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
    # 循环输出执行行
    for line in p.stdout.readlines():
        print line
    # 执行结果
    retval = p.wait()
    print "执行结果:", retval
    # 文件下所有df文件
    df_list = glob.glob(paths[index] + "/*.df")
    for df_item in df_list:
        retval = os.path.getsize(df_item)
        print "文件路径:%s 执行结果:%s" %(df_item,retval)
        # 文件下所有df文件大小
        if retval > 0:
            errorPaths.append(paths[index])
            break

def run_1():
    # 从第一个开始循环
    print "----所有文件-------\n"
    count = 0
    while count < len(paths):
        print "-------------------------\n"
        # 执行方法
        runPath(count)
        count += 1
    # 打印输出日志
    printError()

def run_2():
    # 从第一个开始循环
    count = 0
    print "-------------------------\n"
    print "-1. 退出"
    while count < len(paths):
        # 执行方法
        print count,". ",paths[count],'\n'
        count += 1
    runLang = int(raw_input("请输入要执行的文件:"))
    if runLang >= 0:
        runPath(runLang)
        # 打印输出日志
        printError()
    else:
        close()

def run_3():
    global errorDir
    errorDir = raw_input("请输入要存放的位置:")
    print "修改成功!"

# 结束
def close():
    print "再见"
    sys.exit()

# 开始
def play():
    # 初始化错误
    global errorPaths
    errorPaths = []
    print "---------- 欢迎进入执行系统 ---------------"
    print "1. 执行所有文件\n2. 执行指定文件\n3. 修改log日志默认位置\n0. 退出"
    runLang = raw_input("请输入:")
    switch = {
        '1': run_1,
        '2': run_2,
        '3': run_3,
        '0': close
    }
    switch.get(runLang)()
    play()

# 写日志
def printError():
    print "%s,type:%s" %(errorDir,type(errorDir))
    datestr = time.strftime("%Y-%m-%d%H%M%S",time.gmtime())
    errlogpath = errorDir + datestr + "error.log"
    print errlogpath
    # errlogpath = "/home/zhangluhang/2021-0409110904error.log"
    f = open(errlogpath,'w+')
    for path in errorPaths:
        f.write("%s\r\n" % path)
    try:
        print 0
    except IOError:
        print "文件写异常"
    else:
        f.close()

# 执行获取路径
def root_paths():
    for root,dirs,files in os.walk(rootdir):
        # print dirs
        for dir in dirs:
            # 获取文件所属目录
            filePath = os.path.join(root,dir)
            paths.append(filePath)
    # 开始程序
    play()

root_paths()

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值