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]