python批量从数据库中修改root用户密码

1.先创建修改密码的表passmod.svrlist,并插入两条数据

svr_host   #远程连接的主机host
svr_port   #通过此端口连接到远程主机
svr_user   #远程连接的主机用户
svr_passwd_old  #远程连接的主机密码
svr_passwd_new #远程连接的主机需要设置的新密码
mod_time   #默认为空,修改成功后,返回修改的时间
mod_status enum(‘0‘,‘1‘)  #默认为‘0’,修改成功变成‘1’

并授权insert,select,update操作给passmod用户‘passmod‘@‘%‘

vi tb_create.py   #这里用一条sql语句i,甚至用shell编写更简单。主要为了学习MySQLdb模块
#!/usr/bin/python
import MySQLdb
try:
    conn=MySQLdb.connect(host=‘192.168.163.138‘,user=‘root‘,passwd=‘zhang1992‘,port=3306)
    cur=conn.cursor()
    print ‘connect begin...‘
except:
    print "connect mysql error!"
    exit(1)
def create_tb(cur,db_name,tb_name):
    cur.execute("drop database if exists %s"%db_name)
    cur.execute("create database %s"%db_name)
    cur.execute("use %s"%db_name)
    cur.execute("create table %s(svr_host varchar(50) not null,svr_port varchar(20) not null,svr_user varchar(50) not null,svr_passwd_old varchar(50),svr_passwd_new varchar(50) not null,mod_time timestamp null,mod_status enum(‘0‘,‘1‘) default ‘0‘)"%tb_name)
    return 0
def user_grant(cur,db_name,tb_name):
    sql="grant select,update,insert on %s.%s to ‘%s‘@‘%%‘ identified by ‘zhang1992‘"%(db_name,tb_name,db_name)
    create_tb(cur,db_name,tb_name)
    cur.execute(sql)
    cur.execute(‘flush privileges‘)
def main():
    db_name=‘passmod‘
    tb_name=‘svrlist‘
    user_grant(cur,db_name,tb_name)
    cur.execute("insert into %s.%s(svr_host,svr_port,svr_user,svr_passwd_new,svr_passwd_old) value (‘192.168.163.138‘,‘22‘,‘root‘,‘zhang1992‘,‘zhang1992‘)"%(db_name,tb_name))
    cur.execute("insert into %s.%s(svr_host,svr_port,svr_user,svr_passwd_new,svr_passwd_old) value (‘192.168.163.226‘,‘22‘,‘root‘,‘zhang1992‘,‘zhang1992‘)"%(db_name,tb_name))

    cur.close()
    conn.commit()
    conn.close()
    print ‘connect end...‘
    return 0
if __name__==‘__main__‘:
    main()

执行tb_create.py

python tb_create.py

查询数据库

2.编写mod_passwd.py脚本

#!/usr/bin/python 

import os,MySQLdb,paramiko,time

try:
	#通过passmod用户去连接mysql,上一脚本已经授权
	conn=MySQLdb.connect(host=‘192.168.163.138‘,user=‘passmod‘,passwd=‘zhang1992‘,db=‘passmod‘,port=3306)
except:
	print "conn mysql error..."
	exit(1)

cur=conn.cursor()

def connect_mod(svrlist):
	#通过paramiko模块去远程登录主机,并修改密码
	cli=paramiko.SSHClient()
	cli.set_missing_host_key_policy(paramiko.AutoAddPolicy())
	try:
		cli.connect(hostname=svrlist[0],port=svrlist[1],username=svrlist[2],password=svrlist[3],timeout=5)
	except:
		print "%s connect error..."%svrlist[0]
		return 0
	stdin,stdout,stderr=cli.exec_command("/bin/echo %s|/usr/bin/passwd --stdin %s" %(svrlist[4],svrlist[2]))

	if len(str(stderr.read()))!=0:
		return 0

	cli.close()
	return 1

def main():
	cur.execute("select * from svrlist")
	for row in  cur.fetchall():
		svr_host=str(row[0])
		svr_port=int(row[1])
		svr_user=str(row[2])
		svr_passwd_old=str(row[3])
		svr_passwd_new=str(row[4])
		#只有mod_status为0,才会去修改密码
		#修改密码后,update行,修改mod_status=1,mod_time为当前修改时间
		if int(row[6])==0:
			svrlist=(svr_host,svr_port,svr_user,svr_passwd_old,svr_passwd_new)
			modpass=connect_mod(svrlist)
			#修改成功,则modpass为1
			if modpass==1:
				print svrlist[0],":",svrlist[2],"Successful"
				mod_time=time.strftime("%Y-%m-%d %H:%M:%S",time.localtime(time.time()))
				cur.execute("update svrlist set mod_status=‘1‘,mod_time=‘%s‘ where svr_host=‘%s‘ and svr_user=‘%s‘"%(mod_time,svr_host,svr_user))
			else:
				print svrlist[0],":",svrlist[2],"Failed"
	cur.close()
	conn.commit()
	conn.close()
	return 0

if __name__==‘__main__‘:
	main()	

执行mod_passwd.py

查询数据库

时间: 2024-10-13 07:36:39

python批量从数据库中修改root用户密码的相关文章

RHEL7修改root用户密码

linux中忘记管理员密码是很麻烦的事情,RHEL5和RHEL6中修改root用户密码我们都已经很熟悉了,下面说一下RHEL7中修改root密码; 重新启动RHEL7,到启动菜单按e键: 找到linux16开始的行,按end键把光标移动到该行的末尾 在该行的末尾添加rd.break,然后按ctrl+x组合键启动系统: 进入命令提示符后连续输入命令,如图: 关闭selinux,修改/etc/selinux/config配置文件,把SELINUX=enforcing修改为SELINUX=disabl

mysql-8.0.16-winx64/Linux修改root用户密码

连接数据库等基础操作请自行解决哈,本篇是重点记录如何改密码. 一.查询用户密码: 查询用户密码命令: select host, user, authentication_string from mysql.user ; host:允许用户登录的ip‘位置'%表示可以远程: user:当前数据库的用户名: authentication_string:用户密码(后面有提到此字段): 二. 设置(或修改)用户密码: 默认root密码为空的话 ,下面使用navicat就无法连接(之前我装的5.7好像还可

Kali Linux 2020.1快速修改root用户密码

Kali Linux 2020.1快速修改root用户密码 安装Kali Linux 2020.1系统过程中,将要求创建一个普通用户.而且,在安装过程中没有设置过root密码.由于大部分软件需要root用户权限才可以安装,为了方便使用kali系统,可以为root用户设置密码,并使用root用户登录系统.大学霸IT达人当用户使用普通用户登录后,则可以在终端使用sudo passwd命令快速修改root用户密码.在XFCE桌面中,操作方法如下: C:\home\test> sudo passwd r

在虚拟机下安装ubuntu 10.04 64bit,并修改root用户密码

实验的环境: 笔记本是:HP 虚拟机:VMware  9 准备安装的操作系统: ubuntu 10.04  64bit 实验步骤: 一:让自己的hp支持虚拟化技术(由于ubuntu 10.04  64bit需要CPU支持虚拟化技术,所以要通过bios来更改电脑的默认设置) 启动时根据提示按 Esc 键 按 F10 键以配置 BIOS 使用箭头键滚动到"System Configuration" 选择"Virtualization Technology",然后按 En

在非域环境中修改域用户密码的方法

前几天有个单位,新配置了一台服务器,做文件服务器,为网络中提供共享文件夹服务,该单位大约有50多个用户.服务器采用Windows Server 2008 R2操作系统,升级到Active Directory,为单位每个职工创建了一个用户名,在服务器上除了为每个用户创建一个"共享文件夹"保存个人数据外,还创建了"公共"共享文件夹,保存单位的数据,并且在公共文件夹中创建了若干子目录,通过用户权限,设置只让指定用户上传.修改其中的文件. 在开始规划的时候,是计划让单位的所

linux 中修改root的密码

修改root密码 有的时候会出现忘记了root 用户密码的情况,再次我们可以通过进入single(单)用户模式,将root的密码重新设置,然后重启登录即可. 具体流程: 1.先登录root用户(密码已知的情况),然后在终端中重启(reboot) 2.在重启的过程中不时地按[e]键,会出现下面的视图: 3.按下[e]键,出现下面的视图: 4.通过键盘上的↑或者是↓键(或者是用鼠标)选中第二个(当前默认显示的是第一个),按下[e]键,出现如下视图: 5.在命令行后面输入空格+single,回车之后出

ubuntu14.04修改root用户密码,安装搜狗输入法

修改root用户的密码 -------------------------华丽的分割线--------------------------------- ubuntu14.04安装搜狗输入法 1.卸载sudo apt-get purge fcitx* 2.sudo apt-get install fcitx sudo apt-get install fcitx-pinyin 3.下载http://pinyin.sogou.com/linux/?r=pinyin   sogoupinyin_2.1

Mysql修改root用户密码 For Mac

环境 Mysql版本:5.7.12 操作系统:OSX 10.11 安装文件:.dmg文件 MySQL:mysql-5.7.12-osx10.11-x86_64.dmg(注意5.7跟之前的字段有些不同,下面会说) Step 1 关闭mysql服务.无论你有没有开启mysql服务,保险起见都要运行一下以下命令. sudo /usr/local/mysql/support-files/mysql.server stop (注:我这里报错了:ERROR! MySQL server PID file co

Centos修改root用户密码

如果不是以root用户登录的,请先切换到root用户下, 执行命令:su root 然后按提示输入root用户的密码. 英文系统: [[email protected] ~]# passwd Changing password for user root. New password: Retype new password: passwd: all authentication tokens updated successfully. 中文系统: [[email protected] /]# p