返回顶部
首页 > 资讯 > 后端开发 > Python >python写的系统常用命令(二)
  • 246
分享到

python写的系统常用命令(二)

常用命令系统python 2023-01-31 06:01:06 246人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

python写的系统常用命令,linux和windows通用,用的时候直接from util import *导入即可使用,很方便 #!/usr/bin/Python  # -*- coding: utf-8 -*-  # 通用功能类封装

python写的系统常用命令,linuxwindows通用,用的时候直接from util import *导入即可使用,很方便

  1. #!/usr/bin/Python  
  2. # -*- coding: utf-8 -*-  
  3. # 通用功能类封装  
  4. import os,time,sys,string,urllib,Httplib,shutil,platfORM,tarfile  
  5. from commands import getstatusoutput as getso  
  6. from ConfigParser import *  
  7.  
  8. def hostname(host_name):  
  9.     '''''  
  10.     linux适用  
  11.        
  12.     hostname封装,修改主机名。  
  13.     ''' 
  14.     str_cmd = "/bin/sed -i 's/HOSTNAME/#&/;$a HOSTNAME=%s' /etc/sysconfig/network;/bin/hostname %s" % (host_name,host_name)  
  15.     status, result = getso(str_cmd)  
  16.     wr_log(str_cmd, status, result)  
  17.    
  18. def md5sum(file_name):  
  19.     '''''  
  20.     md5sum封装,获取文件的md5值  
  21.     ''' 
  22.     if os.path.isfile(file_name):  
  23.         f = open(file_name,'rb')  
  24.         py_ver = sys.version[:3]  
  25.         if py_ver == "2.4":  
  26.             import md5 as hashlib  
  27.         else:  
  28.             import hashlib  
  29.             md5 = hashlib.md5(f.read()).hexdigest()  
  30.             f.close()  
  31.             return md5  
  32.     else:  
  33.         return 0 
  34.    
  35. def md5(file_name):  
  36.     '''''  
  37.     linux适用  
  38.    
  39.     md5sum -c 封装,校验md5文件,返回校验成功或失败状态  
  40.     ''' 
  41.     str_cmd="/usr/bin/md5sum -c %s" % file_name  
  42.     status,result=getso(str_cmd)  
  43.     return status  
  44.    
  45. def grep(s_str, file_name):  
  46.     '''''  
  47.     grep封装,查找文件中关键字,有则返回所在行,否则返回空字符串。  
  48.     ''' 
  49.     try:  
  50.         fd = open(file_name)  
  51.         content = fd.read()  
  52.         result = ""  
  53.         if content.find(s_str) != -1:  
  54.             for line in content.split("\n"):  
  55.                 if line.find(s_str) != -1:  
  56.                     result = result + line + "\n" 
  57.         return result.strip()  
  58.     except Exception, e:  
  59.         wr_log("grep %s %s" % (s_str, file_nsme), 1, e)  
  60.    
  61. def rwconf(type, file_name, section, option, s_str=""):  
  62.     '''''  
  63.     读取标准的ini格式配置文件,type可为以下值:  
  64.     get     获取section下的option的值,值为字符串;  
  65.     getint  获取section下的option的值,值为数字;  
  66.     modi    修改section下的option的值,并保存;  
  67.     del     删除section下的option,并保存。  
  68.    
  69.     注:option严格区分大小写  
  70.     ''' 
  71.     try:  
  72.         if type == "get" or type == "getint":  
  73.             cf = ConfigParser()  
  74.         else:  
  75.             cf = ConfParser()  
  76.         cf.read(file_name)  
  77.         if type == "get":  
  78.             return cf.get(section, option)  
  79.         elif type == "getint":  
  80.             return cf.getint(section, option)  
  81.         elif type == "modi":  
  82.             try:  
  83.                 cf.set(section, option, s_str)  
  84.                 cf.write(open(file_name, "w"))  
  85.                 wr_log("modify %s for %s" % (option, file_name))  
  86.             except Exception, e:  
  87.                 wr_log("modify %s for %s" % (option, file_name), 1, str(e))  
  88.         elif type == "del":  
  89.             try:  
  90.                 cf.remove_option(section, option)  
  91.                 cf.write(open(file_name, "w"))  
  92.                 wr_log("del %s for %s" % (option, file_name))  
  93.             except Exception, e:  
  94.                 wr_log("del %s for %s" % (option, file_name), 1, str(e))  
  95.     except Exception, e:  
  96.         wr_log("read %s for %s" % (option, file_name), 1, str(e))  
  97.    
  98. def chkconfig(type, svr_name, switch=""):  
  99.     '''''  
  100.     linux适用  
  101.        
  102.     chkconfig封装,根据传入的type参数执行相应操作,type可以为以下几种:  
  103.     add  添加服务至启动项;  
  104.     del  从启动项删除服务;  
  105.     数字  指定运行级别的服务开启或关闭。  
  106.        
  107.     type及svr_name为必需的参数。  
  108.        
  109.     例子:  
  110.     开启运行级别3的sshd服务:chkconfig("3", "sshd", "on")  
  111.     ''' 
  112.     if type != "add" and type != "del":  
  113.         type = "--level %s" % str(type)  
  114.     str_cmd = "/sbin/chkconfig %s %s %s" % (type, svr_name, switch)  
  115.     status, result = getso(str_cmd)  
  116.     wr_log(str_cmd, status, result)  
  117.    
  118. def passwd(user_name,newpass):  
  119.     '''''  
  120.     passwd封装,修改用户密码  
  121.     ''' 
  122.     os_type = platform.system()  
  123.     if os_type == "Linux":  
  124.         str_cmd = "echo '%s' | passwd %s --stdin" % (newpass, user_name)  
  125.         status, result = getso(str_cmd)  
  126.         wr_log(str_cmd, status, result)  
  127.     elif os_type == "Windows":  
  128.         try:  
  129.             if os.system('net user %s "%s" ' %(user_name,newpass)) == 0:  
  130.                 wr_log("modify passwd for %s  " % user_name)  
  131.             elif os.system('net user %s "%s" ' %(user_name,newpass)) == 2:  
  132.                 raise Exception, "user %s isnot exists" % user_name  
  133.         except Exception,e:  
  134.             wr_log("modify passwd for %s " % user_name, 1, e)  
  135.    
  136. def echo(str, file_name):  
  137.     '''''  
  138.     linux适用  
  139.    
  140.     echo封装,添加字符串到文件尾部  
  141.     ''' 
  142.     str_cmd = "/bin/echo '%s' >> %s" % (str, file_name)  
  143.     status, result = getso(str_cmd)  
  144.     wr_log(str_cmd, status, result)  
  145.    
  146. def upload(localfiles, remotepath, host="xxx", username="xxx", passWord="xxxx"):  
  147.     '''''  
  148.     上传文件至ftp服务器,默认上传至208FTP,如要上传至其它FTP服务器,请指定host/user/pass  
  149.    
  150.     例:  
  151.     upload("a.txt,b.txt", "/test/")  
  152.     上传a.txt、b.txt文件到208的test目录下  
  153.     ''' 
  154.     import base64  
  155.     from ftplib import FTP  
  156.     try:  
  157.         localfiles = localfiles.split(",")  
  158.         f =FTP(host)  
  159.         f.login(username,password)  
  160.         f.cwd(remotepath)  
  161.         for localfile in localfiles:  
  162.             fd = open(localfile,'rb')  
  163.             f.storbinary('STOR %s' % os.path.basename(localfile),fd)  
  164.             fd.close()  
  165.         f.quit()  
  166.         wr_log("upload %s" % localfiles)  
  167.     except Exception, e:  
  168.         wr_log("upload %s" % localfiles, 1, e)  
  169.    
  170. class ConfParser(RawConfigParser):  
  171.     '''''  
  172.     ConfigParser模块有一个缺陷,改写ini文件的某个section的某个option,写入ini文件后  
  173.     ini文件的注释都丢掉了,并且option的大写字母都转换成了小写  
  174.     为了保存ini文件的注释以及option的大小写,重写了write、set、optionxform等方法,由rwconf函数调用  
  175.     ''' 
  176.     def write(self, fp):  
  177.         """Write an .ini-format representation of the configuration state.  
  178.    
  179.         write ini by line no  
  180.         """ 
  181.            
  182.         if self._defaults:  
  183.             section = DEFAULTSECT  
  184.             lineno = self._location[section]  
  185.             self._data[lineno] = "[%s]\n" %section  
  186.             for (key, value) in self._defaults.items():  
  187.                 if key != "__name__":  
  188.                     wholename = section + '_' + key  #KVS  
  189.                     lineno = self._location[wholename]  
  190.                     self._data[lineno] = "%s = %s\n" %(key, str(value).replace('\n', '\n\t'))  
  191.                        
  192.         for section in self._sections:  
  193.             lineno = self._location[section]  
  194.             self._data[lineno] = "[%s]\n" % section  
  195.             for (key, value) in self._sections[section].items():  
  196.                 if key != "__name__":  
  197.                     wholename = section + '_' + key  #KVS  
  198.                     lineno = self._location[wholename]  
  199.                     self._data[lineno] = "%s = %s\n" %(key, str(value).replace('\n', '\n\t'))  
  200.                
  201.         for line in self._data:  
  202.             fp.write("%s"%line)  
  203.         fp.close()  
  204.                
  205.     def _read(self, fp, fpname):  
  206.         """Parse a sectioned setup file.  
  207.    
  208.         When parsing ini file, store the line no in self._location  
  209.         and store all lines in self._data  
  210.         """ 
  211.         self._location = {}  
  212.         self._data = []  
  213.         cursect = None      # None, or a dictionary  
  214.         optname = None 
  215.         lineno = 0 
  216.         e = None            # None, or an exception  
  217.         while True:  
  218.             line = fp.readline()  
  219.             self._data.append(line) #KVS  
  220.             if not line:  
  221.                 break 
  222.             lineno = lineno + 1 
  223.             if line.strip() == '' or line[0] in '#;':  
  224.                 continue 
  225.             if line.split(None, 1)[0].lower() == 'rem' and line[0] in "rR":  
  226.                 # no leading whitespace  
  227.                 continue 
  228.             if line[0].isspace() and cursect is not None and optname:  
  229.                 value = line.strip()  
  230.                 if value:  
  231.                     cursect[optname] = "%s\n%s" % (cursect[optname], value)  
  232.             else:  
  233.                 mo = self.SECTCRE.match(line)  
  234.                 if mo:  
  235.                     sectname = mo.group('header')  
  236.                     if sectname in self._sections:  
  237.                         cursect = self._sections[sectname]  
  238.                     elif sectname == DEFAULTSECT:  
  239.                         cursect = self._defaults  
  240.                         self._location[DEFAULTSECT] = lineno -1 #KVS  
  241.                            
  242.                     else:  
  243.                         cursect = {'__name__': sectname}  
  244.                         self._location[sectname] = lineno -1 #KVS  
  245.                         self._sections[sectname] = cursect  
  246.    
  247.                     optname = None 
  248.                 elif cursect is None:  
  249.                     raise MissingSectionHeaderError(fpname, lineno, line)  
  250.                 else:  
  251.                     mo = self.OPTCRE.match(line)  
  252.                     if mo:  
  253.                         optname, vi, optval = mo.group('option', 'vi', 'value')  
  254.                         if vi in ('=', ':') and ';' in optval:  
  255.                             pos = optval.find(';')  
  256.                             if pos != -1 and optval[pos-1].isspace():  
  257.                                 optval = optval[:pos]  
  258.                         optval = optval.strip()  
  259.                         if optval == '""':  
  260.                             optval = '' 
  261.                         optname = self.optionxform(optname.rstrip())  
  262.                         cursect[optname] = optval  
  263.                            
  264.                         if cursect == self._defaults:  
  265.                             wholename = DEFAULTSECT + '_' + optname  #KVS  
  266.                         else:  
  267.                             wholename = cursect['__name__'] + '_' + optname  #KVS  
  268.                         self._location[wholename] = lineno-1     #KVS  
  269.                     else:  
  270.                         if not e:  
  271.                             e = ParsingError(fpname)  
  272.                         e.append(lineno, repr(line))  
  273.         if e:  
  274.             raise e  
  275.    
  276.     def add_section(self, section):  
  277.         """Create a new section in the configuration.  
  278.    
  279.         Raise DuplicateSectionError if a section by the specified name  
  280.         already exists.  
  281.         """ 
  282.         if section in self._sections:  
  283.             raise DuplicateSectionError(section)  
  284.         self._sections[section] = {}  
  285.    
  286.         linecount = len(self._data)  
  287.         self._data.append('\n')  
  288.         self._data.append('%s'%section)  
  289.         self._location[section] = linecount + 1 
  290.    
  291.     def set(self, section, option, value):  
  292.         """Set an option.""" 
  293.         if not section or section == DEFAULTSECT:  
  294.             sectdict = self._defaults  
  295.         else:  
  296.             try:  
  297.                 sectdict = self._sections[section]  
  298.             except KeyError:  
  299.                 raise NoSectionError(section)  
  300.         option = self.optionxform(option)  
  301.         add = False 
  302.         if not option in sectdict:  
  303.             add = True 
  304.         sectdict[self.optionxform(option)] = value  
  305.         if add:  
  306.             lineno = self._location[section]  
  307.             self._data.append('')  
  308.             idx = len(self._data)  
  309.             while idx>lineno:  
  310.                 self._data[idx-1] = self._data[idx-2]  
  311.                 idx = idx-1 
  312.             self._data[idx+1] = '%s = %s\n'%(option,value)  
  313.             self._location[section+'_'+option]=idx+1 
  314.             for key in self._location:  
  315.                 if self._location[key] > lineno:  
  316.                     self._location[key] = self._location[key] + 1 
  317.             self._data[idx+1] = '%s = %s\n'%(option,value)  
  318.             self._location[section+'_'+option]=idx+1 
  319.    
  320.     def remove_option(self, section, option):  
  321.         """Remove an option. """ 
  322.         if not section or section == DEFAULTSECT:  
  323.             sectdict = self._defaults  
  324.         else:  
  325.             try:  
  326.                 sectdict = self._sections[section]  
  327.             except KeyError:  
  328.                 raise NoSectionError(section)  
  329.         option = self.optionxform(option)  
  330.         existed = option in sectdict  
  331.         if existed:  
  332.             del sectdict[option]  
  333.             wholename = section + '_' + option  
  334.             lineno  = self._location[wholename]  
  335.                
  336.             del self._location[wholename]  
  337.             for key in self._location:  
  338.                 if self._location[key] > lineno:  
  339.                     self._location[key] = self._location[key] -1 
  340.             del self._data[lineno]  
  341.         return existed  
  342.    
  343.     def remove_section(self, section):  
  344.         """Remove a file section.""" 
  345.         existed = section in self._sections  
  346.         if existed:  
  347.             lstOpts = []  
  348.             for option in self._sections[section]:  
  349.                 if option == '__name__':  
  350.                     continue 
  351.                 lstOpts.append(option)  
  352.             for option in lstOpts:  
  353.                 self.remove_option(section,option)  
  354.    
  355.             del self._sections[section]  
  356.             wholename = section  
  357.             lineno  = self._location[wholename]  
  358.                
  359.             del self._location[wholename]  
  360.             for key in self._location:  
  361.                 if self._location[key] > lineno:  
  362.                     self._location[key] = self._location[key] -1 
  363.             del self._data[lineno]  
  364.         return existed  
  365.    
  366.     def optionxform(self, optionstr):  
  367.         ''''' 防止大小写转换''' 
  368.         return optionstr 

 

--结束END--

本文标题: python写的系统常用命令(二)

本文链接: https://lsjlt.com/news/189380.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • python写的系统常用命令(二)
    python写的系统常用命令,linux和windows通用,用的时候直接from util import *导入即可使用,很方便 #!/usr/bin/python  # -*- coding: utf-8 -*-  # 通用功能类封装 ...
    99+
    2023-01-31
    常用命令 系统 python
  • python写的系统常用命令(一)
          python写的系统常用命令,linux和windows通用,用的时候直接from util import *导入即可使用,很方便,本来是一个脚本,但是博文有字数限制,只能分成两部分发了,第二部分连接:http://wangwe...
    99+
    2023-01-31
    常用命令 系统 python
  • 常用到的mysql系统命令
    本文主要给大家介绍常用到的mysql系统命令,文章内容都是笔者用心摘选和编辑的,具有一定的针对性,对大家的参考意义还是比较大的,下面跟笔者一起了解下常用到的mysql系统命令吧。desc 表名;  ...
    99+
    2024-04-02
  • Linux系统下vim常用命令
    一、基础命令: v:可视模式i:插入模式esc:命令模式下:q :退出:wq :保存并退出ZZ:保存并退出:q! :不保存并强制退出 二、在Esc下: dd : 删除当前行yy:复制当前行p:复制已粘贴的文本u:撤销上一步U:撤销对整行的操...
    99+
    2023-08-30
    linux vim 运维
  • linux系统常用命令大全
    ▲ 点击上方"DevOps和k8s全栈技术"关注公众号 Linux 是一个广泛使用的操作系统,被用于服务器、嵌入式系统和个人电脑等领域。在 Linux 中,命令行是一个非常重要的工具,它可以让用户通过命令行界面直接与系统交互。在本篇文章中...
    99+
    2023-09-01
    linux 运维 服务器 bash 开发语言
  • Linux系统常用命令是怎样的
    这篇文章主要为大家分析了Linux系统常用命令是怎样的的相关知识点,内容详细易懂,操作细节合理,具有一定参考价值。如果感兴趣的话,不妨跟着跟随小编一起来看看,下面跟着小编一起深入学习“Linux系统常用命令是怎样的”的知识吧。awk 是一种...
    99+
    2023-06-28
  • Linux系统的常用命令是什么
    小编给大家分享一下Linux系统的常用命令是什么,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!系统信息 arch 显示机器的处理器架构unam...
    99+
    2023-06-27
  • python调用linux系统命令
    python3脚本代码如下# !/usr/bin/python# -.- coding: utf-8 -.-__author__ = 'www.py3study.com'import getpassimport osclas...
    99+
    2023-01-30
    命令 系统 python
  • python调用系统命令ping
     #! /usr/bin/env python #coding=utf-8 ############# import subprocess import time import os ks=int(time.time()) #记录开始时间 ...
    99+
    2023-01-31
    命令 系统 python
  • Python 之调用系统命令
    在python中执行系统命令的方法有以下几种:1.os.system(command)>>> s = os.system('ls -l') 总用量 56 drwxr-xr-x. 2 root root 4096 4月 ...
    99+
    2023-01-31
    命令 系统 Python
  • Linux系统运维常用命令及常识
    本篇内容介绍了“Linux系统运维常用命令及常识”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1 文件管理2 软件管理3 系统管理4 服务管...
    99+
    2023-06-09
  • WindowsXP系统 CMD常用命令大全
    Windows CMD常用命令 前言: cmd是command的缩写.即命令行 。 虽然随着计算机产业的发展,Windows 操作系统的应用越来越广泛,DOS 面临着被淘汰的命运,...
    99+
    2024-04-02
  • CentOS常用系统命令有哪些
    这篇文章主要讲解了“CentOS常用系统命令有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“CentOS常用系统命令有哪些”吧!# uname -a # 查看内核/操作系统/CPU信息#...
    99+
    2023-06-10
  • Linux系统有什么常用命令
    小编给大家分享一下Linux系统有什么常用命令,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!系统信息arch    &nb...
    99+
    2023-06-15
  • Linux系统中MySQL的常用操作命令
    服务: # chkconfig --list        列出所有系统服务 # chkconfig --list | grep on...
    99+
    2024-04-02
  • linux系统中的常用命令有哪些
    本篇文章为大家展示了linux系统中的常用命令有哪些,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。sagane@sagane-ThinkPad-Edge:~$ mii-tool,网络不通时可用此命令...
    99+
    2023-06-13
  • CentOS系统中有哪些常用的命令
    这期内容当中小编将会给大家带来有关CentOS系统中有哪些常用的命令,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。# uname -a# 查看内核/操作系统/CPU信息# head -n 1 /etc/i...
    99+
    2023-06-07
  • Linux系统svn常用命令是怎样的
    本篇文章为大家展示了Linux系统svn常用命令是怎样的,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。SVN是Subversion的简称,是一个开放源代码的版本控制系统,相较于RCS、CVS,它采用...
    99+
    2023-06-28
  • linux系统中防火墙的常用命令
    启停防火墙命令 启动防火墙:systemctl start firewalld 停止防火墙:systemctl stop firewalld 重启防火墙:systemctl restart firewalld 开放防火墙端口命令 防火墙开放...
    99+
    2023-08-18
    linux 服务器 运维
  • Linux查看系统配置的常用命令
    这篇文章主要介绍“Linux查看系统配置的常用命令”,在日常操作中,相信很多人在Linux查看系统配置的常用命令问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Linux查看系统配置的常用命令”的疑惑有所帮助!...
    99+
    2023-06-13
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作