python脚本简化jar操作命令

简介: 本篇和大家分享的是使用python简化对jar包操作命令,封装成简短关键字或词,达到操作简便的目的。最近在回顾和构思shell脚本工具,后面一些文章应该会分享shell内容,希望大家继续关注。 获取磁盘中jar启动包 获取某个程序进程pid 自定义jar操作命令 获取磁盘中jar启动包 这一步.

本篇和大家分享的是使用python简化对jar包操作命令,封装成简短关键字或词,达到操作简便的目的。最近在回顾和构思shell脚本工具,后面一些文章应该会分享shell内容,希望大家继续关注。

  • 获取磁盘中jar启动包
  • 获取某个程序进程pid
  • 自定义jar操作命令

获取磁盘中jar启动包

这一步骤主要扫描指定磁盘中待启动的jar包,然后获取其路径,方便后面操作java命令:

#获取磁盘中jar启动包
def find_file_bypath(strDir):
    filelist = os.listdir(strDir)
    for file in filelist:
        if os.path.isdir(strDir + "/" + file):
            find_file_bypath(strDir + "/" + file)
        else:
            if(file.find(".jar") >= 0):
                fileInfo = MoFileInfo(file,strDir + "/" + file)
                all_list.append(fileInfo)

这个递归获取路径就不多说了,可以参考前一篇文章

获取某个程序进程pid

在linux中获取某个程序pid并打印出来通常的命令是:

ps -ef | grep 程序名字

在py工具中同样用到了grep命令,通过执行linux命令获取相对应的pid值:

#获取pid
def get_pid(name):
    child = subprocess.Popen(['pgrep', '-f', name], stdout=subprocess.PIPE, shell=False)
    response = child.communicate()[0]
    print(response)
    return response

这里直接取的第一个值,因为上面第一节已经能够定位到程序jar包的名字,所以获取pid很容易

自定义jar操作命令

自定义其实就是用我们随便定义的单词或关键字来代替jar包操作命令,这里我封装了有5种,分别如下:

  • nr:nohup java -jar {} 2>&1 &
  • r:java -jar {}
  • k:kill -9 {}
  • d:rm -rf {}
  • kd:kill -9 {}

{}代表的是pid和jar包全路径,相关代码:

#执行命令
def exec_file(index):
    try:
        if(index <= -1):
            pass
        else:
         fileInfo = all_list[int(index)]
         print("你选择的是:{}".format(fileInfo.path))
         strcmd = raw_input("请输入执行命令(nr:nohup启动java r:java启动 k:kill d:删除java包   kd:kill+删除jar包):\r\n")
         if(strcmd == "nr"):
            os.system("nohup java -jar {} 2>&1 & ".format(fileInfo.path))
         elif(strcmd == "r"):
            os.system("java -jar {}".format(fileInfo.path))
         elif(strcmd == "k"):
            pid = get_pid(fileInfo.name)
            print("pid:" + pid)
            strcmd_1 = "kill -9 {}".format(pid)
            exec_cmd(strcmd_1)
         elif(strcmd == "d"):
            strcmd_1 = "rm -rf {}".format(fileInfo.path)
            exec_cmd(strcmd_1)
         elif(strcmd == "kd"):
            pid = get_pid(fileInfo.name)
            strcmd_1 = "kill -9 {}".format(pid)
            exec_cmd(strcmd_1)

            strcmd_1 = "rm -rf {}".format(fileInfo.path)
            exec_cmd(strcmd_1)
         else:
            print("无任何操作")
    except:
        print("操作失败")

这里python操作linux命令用到的方式是os.system(command),这样已定保证了linux命令执行成功后才继续下一步的操作;下面是本次分享内容的全部代码:

#!/usr/bin/python
#coding=utf-8
import os
import subprocess
from subprocess import check_output

all_list = []

class MoFileInfo:
    def __init__(self,name,path):
        self.name = name
        self.path = path

#获取磁盘中jar启动包
def find_file_bypath(strDir):
    filelist = os.listdir(strDir)
    for file in filelist:
        if os.path.isdir(strDir + "/" + file):
            find_file_bypath(strDir + "/" + file)
        else:
            if(file.find(".jar") >= 0):
                fileInfo = MoFileInfo(file,strDir + "/" + file)
                all_list.append(fileInfo)

def show_list_file():
    for index,x in enumerate(all_list):
        print("{}. {}".format(index,x.name))

#获取pid
def get_pid(name):
    child = subprocess.Popen(['pgrep', '-f', name], stdout=subprocess.PIPE, shell=False)
    response = child.communicate()[0]
    print(response)
    return response

#执行命令
def exec_file(index):
    try:
        if(index <= -1):
            pass
        else:
         fileInfo = all_list[int(index)]
         print("你选择的是:{}".format(fileInfo.path))
         strcmd = raw_input("请输入执行命令(nr:nohup启动java r:java启动 k:kill d:删除java包   kd:kill+删除jar包):\r\n")
         if(strcmd == "nr"):
            os.system("nohup java -jar {} 2>&1 & ".format(fileInfo.path))
         elif(strcmd == "r"):
            os.system("java -jar {}".format(fileInfo.path))
         elif(strcmd == "k"):
            pid = get_pid(fileInfo.name)
            print("pid:" + pid)
            strcmd_1 = "kill -9 {}".format(pid)
            exec_cmd(strcmd_1)
         elif(strcmd == "d"):
            strcmd_1 = "rm -rf {}".format(fileInfo.path)
            exec_cmd(strcmd_1)
         elif(strcmd == "kd"):
            pid = get_pid(fileInfo.name)
            strcmd_1 = "kill -9 {}".format(pid)
            exec_cmd(strcmd_1)

            strcmd_1 = "rm -rf {}".format(fileInfo.path)
            exec_cmd(strcmd_1)
         else:
            print("无任何操作")
    except:
        print("操作失败")

def exec_cmd(strcmd):
    str = raw_input("是否执行命令(y/n):" + strcmd + "\r\n")
    if(str == "y"):
        os.system(strcmd)

strDir = raw_input("请输入jar所在磁盘路径(默认:/root/job):\r\n")
strDir = strDir if (len(strDir) > 0) else "/root/job"
#获取运行包
find_file_bypath(strDir)
#展示运行包
show_list_file()
#选择运行包
strIndex = raw_input("请选择要运行的编号:\r\n")
#执行命令
exec_file(strIndex)
目录
相关文章
|
18天前
|
安全 网络安全 文件存储
思科设备巡检命令Python脚本大集合
【10月更文挑战第18天】
55 1
思科设备巡检命令Python脚本大集合
|
14天前
|
关系型数据库 MySQL 数据库连接
python脚本:连接数据库,检查直播流是否可用
【10月更文挑战第13天】本脚本使用 `mysql-connector-python` 连接MySQL数据库,检查 `live_streams` 表中每个直播流URL的可用性。通过 `requests` 库发送HTTP请求,输出每个URL的检查结果。需安装 `mysql-connector-python` 和 `requests` 库,并配置数据库连接参数。
113 68
|
5天前
|
缓存 运维 NoSQL
python常见运维脚本_Python运维常用脚本
python常见运维脚本_Python运维常用脚本
11 3
|
5天前
|
数据采集 JSON 数据安全/隐私保护
Python常用脚本集锦
Python常用脚本集锦
10 2
|
5天前
|
运维 监控 应用服务中间件
自动化运维:如何利用Python脚本提升工作效率
【10月更文挑战第30天】在快节奏的IT行业中,自动化运维已成为提升工作效率和减少人为错误的关键技术。本文将介绍如何使用Python编写简单的自动化脚本,以实现日常运维任务的自动化。通过实际案例,我们将展示如何用Python脚本简化服务器管理、批量配置更新以及监控系统性能等任务。文章不仅提供代码示例,还将深入探讨自动化运维背后的理念,帮助读者理解并应用这一技术来优化他们的工作流程。
|
7天前
|
运维 监控 Linux
自动化运维:如何利用Python脚本优化日常任务##
【10月更文挑战第29天】在现代IT运维中,自动化已成为提升效率、减少人为错误的关键技术。本文将介绍如何通过Python脚本来简化和自动化日常的运维任务,从而让运维人员能够专注于更高层次的工作。从备份管理到系统监控,再到日志分析,我们将一步步展示如何编写实用的Python脚本来处理这些任务。 ##
|
27天前
|
Linux 区块链 Python
Python实用记录(十三):python脚本打包exe文件并运行
这篇文章介绍了如何使用PyInstaller将Python脚本打包成可执行文件(exe),并提供了详细的步骤和注意事项。
48 1
Python实用记录(十三):python脚本打包exe文件并运行
|
12天前
|
JSON 测试技术 持续交付
自动化测试与脚本编写:Python实践指南
自动化测试与脚本编写:Python实践指南
16 1
|
20天前
|
Python
Python PDB命令介绍
【10月更文挑战第15天】 使用PDB的方式有两种,其中一种是在脚本中添加代码,不觉得这种方式比print好在哪里,所以这种方式此文不表。这里我们只学习PDB的命令行使用方式
33 4
|
26天前
|
机器学习/深度学习 缓存 PyTorch
pytorch学习一(扩展篇):miniconda下载、安装、配置环境变量。miniconda创建多版本python环境。整理常用命令(亲测ok)
这篇文章是关于如何下载、安装和配置Miniconda,以及如何使用Miniconda创建和管理Python环境的详细指南。
302 0
pytorch学习一(扩展篇):miniconda下载、安装、配置环境变量。miniconda创建多版本python环境。整理常用命令(亲测ok)
下一篇
无影云桌面