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 ...
随机推荐
- SpringBoot2.4.2下配置Lettuce使用Redis
1. Springboot2.4.2下对Redis的基础集成 1.1 maven添加依赖 <dependency> <groupId>org.springframework.b ...
- 园子的推广博文:欢迎收看 Apache Flink 技术峰会 FFA 2021 的视频回放
园子专属收看链接:https://developer.aliyun.com/special/ffa2021/live#?utm_content=g_1000316459 Flink Forward 是 ...
- 【C语言】将文本中汉字读入字符数组输出乱码
输出中文字符乱码 今天从文件中将中文读入字符数组后输出发现其中文变成了乱码,,令人头大. 解决办法 将文本编码格式改成ANSI即可. 打开记事本->文件->另存为->更改编码格式-& ...
- github与gitlab创建新仓库
github创建新仓库 然后根据下一页的命令提示进行即可 gitlab创建新仓库 git init git remote add origin git@***.***.**.**:user/proje ...
- 分布式一致性协议Raft,以及难搞的Paxos
https://blog.csdn.net/colorant/article/details/73887706
- gorm声明模型
模型定义 模型是标准的结构体,由go的基本数据类型.实现了Scanner和Valuer接口的自定义类型及其指针或别名组成 例如: type User struct { ID uint Name str ...
- 集合框架-LinkedList集合(有序不唯一)
1 package cn.itcast.p2.linkedlist.demo; 2 3 import java.util.Iterator; 4 import java.util.LinkedList ...
- 001 研发同学必学哪些 Linux 命令?
01 研发同学为啥要掌握 Linux 命令? 身为研发同学,Linux 是绕不过去的一个小山包,不是说要掌握的十分精通,在程序员界里做个极客,也不是说要抢了 Devops 同学的饭碗,但至少要做到摆脱 ...
- VC++ 启用内存泄露检测
_CrtDumpMemoryLeaks()就是检测从程序开始到执行该函数进程的堆使用情况,通过使用_CrtDumpMemoryLeaks()我们可以进行简单的内存泄露检测. #include &quo ...
- ApacheCN Golang 译文集 20211025 更新
Go 云原生编程 零.前言 一.现代微服务架构 二.使用 RESTAPI 构建微服务 三.保护微服务 四.使用消息队列的异步微服务架构 五.使用 React 构建前端 六.在容器中部署应用 七.AWS ...