代码语言:javascript复制
#^_^ coding=gbk ^_^
import os,sys
import linecache
import uuid
def config():
'获取配置文件里面的mac和主机名'
fn = ('c:\add\config.cfg')
lines = [ x.split('n') for x in linecache.getlines(fn) if x.startswith('R')]
ip_mac_lines = [ x[0] for x in lines ]
return ip_mac_lines
def host_mac():
'获取客户机器的MAC地址'
# node = uuid.getnode()
# mac = uuid.UUID(int=node)
# adr_mac = mac.hex[-12:]
# return adr_mac
#KVM虚拟机获取mac地址的方法
mac = os.popen('getmac').read()
mac_adr = mac.split('n')[3]
mac_adr1 = mac_adr.split(' ')[0].replace('-','')
return mac_adr1
def replace_host():
'根据mac地址获取出对应更改主机的主机名'
cg_host = config()
h_mac = host_mac().lower()
for x in cg_host:
if x.lower().split(' ')[-1] == h_mac:
return x.lower().split(' ')[0]
if os.name == 'nt':
repl_host = replace_host()
hostname = os.popen('hostname').read().replace('n','')
if hostname == repl_host:
#windows加域
os.system('netdom join {0} /domain:render.com /userd:render\administrator /passwordd:密码>C:\add\ad.txt'.format(repl_host))
os.system('regedit /s C:\add\denglu.reg')
os.system('shutdown -r -t 20')
os.system('del "C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup\rh.lnk"')
else:
#生成更改主机名的注册表,在系统注册,然后重启系统
regedit1 = r'Windows Registry Editor Version 5.00'
regedit2 = r'[HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlComputerNameComputerName]'
regedit3 = r'"ComputerName"="{0}"'.format(repl_host)
regedit4 = r'[HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesTcpipParameters]'
regedit5 = r'"NV Hostname"="{0}"'.format(repl_host)
regedit6 = r'"Hostname"="{0}"'.format(repl_host)
f_file = '{0}n{1}n{2}n{3}n{4}n{5}'.format(regedit1,regedit2,regedit3,regedit4,regedit5,regedit6)
f_name = open('C:\add\ComputerName.reg','w')
f_name.write(f_file)
f_name.close()
os.system('regedit /s C:\add\ComputerName.reg')
os.system('shutdown -r -t 30')
else:
print 'OS is not windows system'
config.cfg 格式如下:
o(︶︿︶)o 唉。。这个代码写出来就用了1个小时,调试用了一天。。真纠结,不过收获了好多经验。