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)
目录
相关文章
|
25天前
|
安全 Linux 网络安全
利用Python脚本自动备份网络设备配置
通过本文的介绍,我们了解了如何利用Python脚本自动备份网络设备配置。该脚本使用 `paramiko`库通过SSH连接到设备,获取并保存配置文件。通过定时任务调度,可以实现定期自动备份,确保网络设备配置的安全和可用。希望这些内容能够帮助你在实际工作中实现网络设备的自动化备份。
51 14
|
28天前
|
运维 Shell 数据库
Python执行Shell命令并获取结果:深入解析与实战
通过以上内容,开发者可以在实际项目中灵活应用Python执行Shell命令,实现各种自动化任务,提高开发和运维效率。
56 20
|
1月前
|
安全 Shell 数据处理
使用Python执行Shell命令并获取结果
在实际应用中,可以根据需要选择适当的参数和方法来执行Shell命令,并处理可能出现的各种情况。无论是系统管理、自动化任务还是数据处理,掌握这些技巧都将极大地提高工作效率。
64 12
|
2月前
|
分布式计算 MaxCompute 对象存储
|
2月前
|
Python
自动化微信朋友圈:Python脚本实现自动发布动态
本文介绍如何使用Python脚本自动化发布微信朋友圈动态,节省手动输入的时间。主要依赖`pyautogui`、`time`、`pyperclip`等库,通过模拟鼠标和键盘操作实现自动发布。代码涵盖打开微信、定位朋友圈、准备输入框、模拟打字等功能。虽然该方法能提高效率,但需注意可能违反微信使用条款,存在风险。定期更新脚本以适应微信界面变化也很重要。
213 61
|
2月前
|
数据挖掘 vr&ar C++
让UE自动运行Python脚本:实现与实例解析
本文介绍如何配置Unreal Engine(UE)以自动运行Python脚本,提高开发效率。通过安装Python、配置UE环境及使用第三方插件,实现Python与UE的集成。结合蓝图和C++示例,展示自动化任务处理、关卡生成及数据分析等应用场景。
178 5
|
2月前
|
数据采集 存储 监控
21个Python脚本自动执行日常任务(2)
21个Python脚本自动执行日常任务(2)
129 7
21个Python脚本自动执行日常任务(2)
|
2月前
|
Android开发 开发者 Python
通过标签清理微信好友:Python自动化脚本解析
微信已成为日常生活中的重要社交工具,但随着使用时间增长,好友列表可能变得臃肿。本文介绍了一个基于 Python 的自动化脚本,利用 `uiautomator2` 库,通过模拟用户操作实现根据标签批量清理微信好友的功能。脚本包括环境准备、类定义、方法实现等部分,详细解析了如何通过标签筛选并删除好友,适合需要批量管理微信好友的用户。
108 7
|
3月前
|
监控 数据挖掘 数据安全/隐私保护
Python脚本:自动化下载视频的日志记录
Python脚本:自动化下载视频的日志记录
|
3月前
|
数据采集 监控 数据挖掘
Python自动化脚本:高效办公新助手###
本文将带你走进Python自动化脚本的奇妙世界,探索其在提升办公效率中的强大潜力。随着信息技术的飞速发展,重复性工作逐渐被自动化工具取代。Python作为一门简洁而强大的编程语言,凭借其丰富的库支持和易学易用的特点,成为编写自动化脚本的首选。无论是数据处理、文件管理还是网页爬虫,Python都能游刃有余地完成任务,极大地减轻了人工操作的负担。接下来,让我们一起领略Python自动化脚本的魅力,开启高效办公的新篇章。 ###

热门文章

最新文章

推荐镜像

更多