xuke123 发表于 2018-8-11 14:09:11

python操作linux关机、重启和修改ip地址

#coding = utf8  
'''
  
Created on 2016-7-4
  
@desc: change the network of system and reboot,shutdown ;suit for ubuntu and centos
  
@attention: if ubuntu, need root or sudo without password ;and before use this script ,
  
            you need change something; eg:
  
            <
  
            chown root:root systemControl.py
  
            chmod 777 systemControl.py
  
            chmod 777 /etc/network/interfaces
  
            >
  
'''
  

  
import sys
  
import os
  
import platform
  
import commands
  

  
class systemControl(object):
  

  
    def __init__(self,command,ip,gateway,netmask,device):
  
      """
  
      @desc: init
  
      """
  
      self.platform = self.getPlatform()
  
      self.command = command
  
      self.ip = ip
  
      self.gateway = gateway
  
      self.netmask = netmask
  
      self.device = device
  

  
    def shutDown(self):
  
      """
  
      @attention: shutdown the system
  
      """
  
      os.system("sudo init 0")
  

  
    def reboot(self):
  
      """
  
      @attention: reboot the system
  
      """
  
      os.system("sudo init 6")
  

  
    def changeNetwork(self):
  
      """
  
      @attention: change the network of the system
  
      """
  
      if self.platform == "centos":
  
            path = "/etc/sysconfig/network-scripts/ifcfg-"+str(self.device)
  
            file_handler = open(path,"r")
  
            network_content = file_handler.read()
  
            file_handler.close()
  
            conte = "IPADDR=%s\nNETMASK=%s\nGATEWAY=%s\n" %(self.ip,self.netmask,self.gateway)
  
            num = network_content.find("IPADDR")
  
            if num != -1:
  
                network_content = network_content[:num]+conte
  
                file_handler = open(path,"w")
  
                file_handler.write(network_content)
  
                file_handler.close()
  
      elif self.platform == "ubuntu":
  
            path = "/etc/network/interfaces"
  
            file_handler = open(path,"r")
  
            network_interfaces = file_handler.read()
  
            file_handler.close()
  
            network_content = network_interfaces.split("auto")
  
            for i in network_content:
  
                if self.device in i:
  
                  content = "auto %s\niface %s inet static\n\taddress %s\n\tnetmask %s\n\tgateway %s\n\t" %(self.device,self.device,self.ip,self.netmask,self.gateway)
  
                  network_interfaces = network_interfaces.replace(i,content)
  
                  break
  
            file_handler = open(path,"w")
  
            file_handler.write(network_interfaces)
  
            file_handler.close()
  
      result = commands.getoutput("sudo ifdown %s && sudo ifup %s" %(self.device,self.device))
  
      print result
  

  
    def delWith(self):
  
      if self.command == "reboot":
  
            self.reboot()
  
      elif self.command == "shutdown":
  
            self.shutDown()
  
      elif self.command == "changeNetwork":
  
            self.changeNetwork()
  
      else:
  
            print "no this command......"
  

  
    def getPlatform(self):
  
      """
  
      @attention: get the platform of the system
  
      """
  
      try:
  
            platForm = platform.platform().lower()
  
            if "ubuntu" in platForm:
  
                print platForm
  
                return "ubuntu"
  
            elif "centos" in platForm:
  
                print platForm
  
                return "centos"
  
      except:
  
            print "unknow os..."
  
            return None
  

  
if __name__ == "__main__":
  
    """"
  
    @param: <shutdown/reboot>
  
            <changeNetwork>,<ip>,<gateway>,<netmask>,<device>
  
    """
  
    command = sys.argv
  
    try:
  
      ip = sys.argv
  
      gateway = sys.argv
  
      netmask = sys.argv
  
      device = sys.argv
  
    except:
  
      ip = None
  
      gateway = None
  
      netmask = None
  
      device = None
  
    doSomething = systemControl(command,ip,gateway,netmask,device)
  
    doSomething.delWith()
页: [1]
查看完整版本: python操作linux关机、重启和修改ip地址