標籤:修改密碼 python
用戶端代碼:
如果注釋最下面三行socket發送,可以直接在本機修改密碼不發送資料到服務端。
# -*- coding: utf-8 -*-#author:Guoyabinimport randomimport stringimport osfrom socket import *serverip = ‘10.1.2.221‘port = 9999buffersize = 1024addr = (serverip,port)client = socket(AF_INET,SOCK_STREAM)client.connect(addr)def Psswd(length): chars=string.ascii_letters+string.digits return ‘‘.join([random.choice(chars) for i in range(length)])def get_wanip_info(): get_ip_cmd="/sbin/ifconfig |grep ‘inet addr‘|awk -F\: ‘{print $2}‘|awk ‘{print $1}‘ | grep -v ‘^127‘ | grep -v ‘^192‘" ethip=os.popen(get_ip_cmd).readline().strip() return ethip#密碼長度passwd = Psswd(18)username = ‘root‘try: os.system(‘echo %s | /usr/bin/passwd --stdin %s‘ %(passwd,username)) print get_wanip_info(),‘=>‘,passwd print "root passwd change success!!!!"except: print "root passwd change error!!!!"data = str(get_wanip_info()+‘=>‘+passwd)client.send(‘%s\r\n‘ % str(get_wanip_info()+‘=>‘+passwd))client.close()
本著方便的原則,增加服務端用來接收密碼。使營運管理員更方便批量執行指令碼,修改密碼。
# -*- coding: utf-8 -*-#author:Guoyabinimport socketimport threadingimport timeserver = socket.socket(socket.AF_INET, socket.SOCK_STREAM)#監聽連接埠:server.bind((‘10.1.2.221‘, 9999))server.listen(10)print(‘Waiting for connection...‘)def tcplink(sock, addr): while True: data = sock.recv(1024) time.sleep(1) if not data or data.decode(‘utf-8‘) == ‘exit‘: break #為防止惡意telnet發送資料包,增加=>驗證。 if ‘=>‘ not in data: break print data savepasswd(data) sock.close()def savepasswd(passwd): now=time.strftime("%Y-%m-%d %H:%M:%S") errfile=open(‘passwd.txt‘,‘a‘) errfile.write(now+‘ ‘+str(passwd)) errfile.close()while True: # 接受一個新串連: sock, addr = server.accept() # 建立新線程來處理TCP串連: t = threading.Thread(target=tcplink, args=(sock, addr)) t.start()
本文出自 “hbbdgyb” 部落格,請務必保留此出處http://hbbdgyb.blog.51cto.com/5031387/1977784
python2批量修改linux密碼