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 ...
随机推荐
- JuiceFS 即将发布 1.0 并调整开源许可
开源一周年 JuiceFS 开始于 2017 年,是一款云原生分布式文件系统,旨在帮助企业解决多云.跨云.混合云环境下所面临的诸多挑战:数据安全和保护.大数据架构升级.海量小文件访问.Kubernet ...
- 《剑指offer》面试题15. 二进制中1的个数
问题描述 请实现一个函数,输入一个整数,输出该数二进制表示中 1 的个数.例如,把 9 表示成二进制是 1001,有 2 位是 1.因此,如果输入 9,则该函数输出 2. 示例 1: 输入:00000 ...
- 网络编程-TCP连接的建立与终止
TCP是一个面向连接的协议.无论哪一方向另一方发送数据之前,都必须先在双方之间建立一条连接. 1.建立连接 请求端(通常称为客户)发送一个 SYN 段指明客户打算连接的服务器的端口,以及初始序号( I ...
- Solon Web 开发,五、数据访问、事务与缓存应用
Solon Web 开发 一.开始 二.开发知识准备 三.打包与运行 四.请求上下文 五.数据访问.事务与缓存应用 六.过滤器.处理.拦截器 七.视图模板与Mvc注解 八.校验.及定制与扩展 九.跨域 ...
- vscode控制台中文乱码
原因 vscode中文控制台乱码原因是调用的cmd的显示. 所以问题实际上是cmd的显示中文乱码问题.当然还有其他方法仅仅修改vscode的显示,这里不在说明. cmd中国版本windows默认是93 ...
- Cesium中级教程7 - Geometry and Appearances 几何图形和外观
Cesium中文网:http://cesiumcn.org/ | 国内快速访问:http://cesium.coinidea.com/ 本教程将向您介绍提供使用Primitive API的几何图形和外 ...
- 阐述JDBC操作数据库的步骤
1. 加载驱动. Class.forName("oracle.jdbc.driver.OracleDriver"); (注意:加载驱动在JDBC 4.0中是可以省略的,自动从类路径 ...
- echarts的通用属性的介绍
通常做数据可视化时,会用到统计图,这里我使用的是Echarts,对于第一次用的人来说,还是有点难度的,主要是里面的属性太多,看的头痛,这里我自己做个笔记 这里的配置项手册里面就是查找各种属性了,在Ec ...
- ESP32S2小项目-FM-网络时钟/电台-Arduino开发环境
ESP32S2小项目,FM,网络时钟/电台,Arduino开发环境 效果展示 @ 目录 ESP32S2小项目,FM,网络时钟/电台,Arduino开发环境 效果展示 开机动画: 网络时钟: FM模块: ...
- UVA1619 感觉不错 Feel Good(良好的感觉) 题解
0.题面: 给出正整数n和一个(1 <= n <= 100 000)长度的数列,要求找出一个子区间,使这个子区间的数字和乘上子区间中的最小值最大.输出这个最大值与区间的两个端点. 1.思路 ...