python2批量改密码
客户端代码:
如果注释最下面三行socket发送,可以直接在本机修改密码不发送数据到服务端。
# -*- coding: utf-8 -*-
#author:Guoyabin
import random
import string
import os
from socket import * serverip = '10.1.2.221'
port = 9999
buffersize = 1024
addr = (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="ip add |awk '/10.1/ {print $2}'|grep -oP '(\d+.){3}\d+'"
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:Guoyabin
import socket
import threading
import time server = 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()
服务器端改良版,使用socketserver模块替代socket。让多线程io程序更健壮一些。
使用下面代码,替换上面服务端代理
# -*- coding:utf-8 -*-
#author:Guoyabin
import socketserver
import time class recvpasswd(socketserver.BaseRequestHandler):
def handle(self):
conn=self.request #封装所有对象请求
while True:
date=conn.recv(1024).decode()
if date=='exit':
break
if len(date)==0: #空数据则断开
break
if '=>' not in date: #防止恶意数据写入
break
#print(self.client_address,date)
self.savepasswd(date) def savepasswd(self,passwd):
now=time.strftime("%Y-%m-%d %H:%M:%S")
errfile=open('passwd.txt','a')
errfile.write(now+' '+str(passwd))
errfile.close() if __name__=='__main__':
server=socketserver.ThreadingTCPServer(('0.0.0.0',9999),recvpasswd)
server.serve_forever()
python2批量改密码的更多相关文章
- 最新版-MySQL8.0 安装 - 改密码 之坑
1. 需求背景 最近需要在一台性能一般的电脑上使用数据库,所以决定安装MySQL数据库,以前安装都是使用WorkBench自动化安装,但安装过程太慢占用空间过大,于是下载zip压缩包.之所以选择选择M ...
- Ansible 批量修改密码
客户要求每3个月修改一次主机密码.密码规则为客服提供的一串字符 xxxx + 主机后3位. 将需要登录主机添加到 Ansible. 将需要登录主机的公钥添加到 known_hosts ssh-keys ...
- linux '--stdin'错误 -批量修改密码
虚拟机:VMware虚拟机 系统:Linux ubuntu 4.4.0-31-generic #50~14.04.1-Ubuntu SMP Wed Jul 13 01:07:32 UTC 2016 ...
- 如何将wordpress所有文章批量改为已发布状态
用wordpress建站的一个好处就是bd站长工具平台上有数据结构插件,可以认为bd默认支持wp发展,另外一种建站程序是discuz.我们在用wordpress发布文章时,特别是那种多用户投稿的文章一 ...
- 7zip批量压缩,并批量改.jar
批量压缩.bat--要和将要压缩的文件在同一级目录下 for /d %%X in (*) do "D:\Program Files\7-Zip\7z.exe" a "%% ...
- oracle数据库输入conn / as sysdba 出现ORA-01031: insufficient privileges + 忘记sys密码如何改密码
今天忘记了oracle数据库sys用户的密码,想着直接改密码输入conn / as sysdba 出现了ORA-01031: insufficient privileges(权限不足)的错误,到处搜教 ...
- MYSQL5.7.9改密码相关设置
Centos7上,对MySQL5.7开启远程连接. 1.修改/etc/my.cnf [mysqld] validate_password=off 2.命令行进入mysql use mysql; GRA ...
- mac下将python2.7改为python3
mac下将python2.7改为python3 查看当前电脑python版本 python -V 修改.bash_profile文件 vi ~/.bash_profile //编辑bash_profi ...
- mac下 将python2.7改为python3
1.查看当前电脑python版本 python -V // 显示2.7.x 2.用brew升级python brew update python 3.如果安装成功,去系统目录下回看到两个版本的pyth ...
随机推荐
- promise的队列,宏任务,微任务,同步任务
// promise里面有一个特别的任务,就是微任务 // 同步任务>微任务>宏任务 setTimeout(() => { console.log("setTimeout& ...
- gorm中的更新
保存所有字段 Save 会保存所有的字段,即使字段是零值. db.First(&user, 5)user.Name = sql.NullString{"王八", true} ...
- mybatis配置入门中遇到的问题
问题一 非法注射 问题描述:WARNING: An illegal reflective access operation has occurred 这种问题主要是jdk版本和mybatis的jar包 ...
- 裸k8s搭建中遇到的两个坑
在装docker的时候报错了,需要先安装selinux版本.才能安装容器. 需要按照提示安装这个包. 采用强制安装.rpm -ivh 包名字 --force --nodeps 在k8s的master上 ...
- Kubernetes的Controller进阶(十二)
一.Controller 既然学习了Pod进阶,对于管理Pod的Controller肯定也要进阶一下,之前我们已经学习过的Controller有RC.RS和Deployment,除此之外还有吗,如果感 ...
- 如何使用 pytorch 实现 SSD 目标检测算法
前言 SSD 的全称是 Single Shot MultiBox Detector,它和 YOLO 一样,是 One-Stage 目标检测算法中的一种.由于是单阶段的算法,不需要产生所谓的候选区域,所 ...
- 如何在pyqt中通过OpenCV实现对窗口的透视变换
窗口的透视变换效果 当我们点击UWP应用中的小部件时,会发现小部件会朝着鼠标点击位置凹陷下去,而且不同的点击位置对应着不同的凹陷情况,看起来就好像小部件在屏幕上不只有x轴和y轴,甚至还有一个z轴.要做 ...
- openstack horizon 学习(3) DataTable
上一篇中粗略的讲了下openstack中horizon的dashboard和panel的添加,本打算在这章中对有关于pluggable settings中的配置做详细的总结,然放弃了这念头.原因是搞懂 ...
- HTML加载动画实现
在页面加载完成之前或者执行某操作时,先显示要显示的加载动画. 实现原理 先定义一个加载动画元素(最好是纯CSS实现,图片的话可能慢一点),当页面未加载完成之前,先使其"可见",当页 ...
- bom-setInterval
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...