1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
| #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 changenetwork.py
chmod 777 changenetwork.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[1]
try:
ip = sys.argv[2]
gateway = sys.argv[3]
netmask = sys.argv[4]
device = sys.argv[5]
except:
ip = None
gateway = None
netmask = None
device = None
doSomething = systemControl(command,ip,gateway,netmask,device)
doSomething.delWith()
|