python 随机远程主机修改密码

执行脚本需要有以下前提;

  1. 主机与客户机配置互信(ssh 无密码认证登录)
  2. 需要读取当前目录下的host文件,里面是连接远程主机的ip地址
  3. 脚本可以修改远程主机为ubuntu和centos的密码

代码如下:

#!/usr/bin/env python

#coding:utf-8

import paramiko

import platform

import sys,os

import threading

import time

def color_print(msg, color=‘red‘, exits=False):   //定义输出信息颜色函数

color_msg = {‘blue‘: ‘\033[1;36m%s\033[0m‘,

‘green‘: ‘\033[1;32m%s\033[0m‘,

‘yellow‘: ‘\033[1;33m%s\033[0m‘,

‘red‘: ‘\033[1;31m%s\033[0m‘,

‘title‘: ‘\033[30;42m%s\033[0m‘,

‘info‘: ‘\033[32m%s\033[0m‘

}

msg = color_msg.get(color, ‘red‘) % msg

print msg

if exits:

time.sleep(2)

sys.exit()

return msg

def ssh(hostname,cmd):   //ssh 连接远程主机

port=22

username=‘root‘

pkey_file=‘/root/.ssh/id_rsa‘

key = paramiko.RSAKey.from_private_key_file(pkey_file)

s = paramiko.SSHClient()

s.load_system_host_keys()

s.set_missing_host_key_policy(paramiko.AutoAddPolicy())

try:

s.connect(hostname,port,username,pkey=key)

stdin,stdout,stderr = s.exec_command(cmd)

result=stdout.read()

color_print(‘Connect %s Successful‘ % hostname,‘info‘)

return result.strip(‘\n‘)

except:

color_print(‘Connect %s failed‘ % hostname,‘red‘,True)

def MkPasswd():   //生成随机密码,密码包含数字,字母,特殊字符

from random import choice

import string

SpecialChar=‘&[email protected]#$%^*-_=‘

length=16

chars=string.letters+string.digits+SpecialChar

passwd=‘‘.join([choice(chars) for i in range(length)])

return passwd

def PwdFile(hostname,passwd):  //生成密码保存在脚本目录下

istimeformat=‘%Y-%m-%d‘

Date=time.strftime(istimeformat,time.localtime())

FileName=‘UpdatePwd_%s.txt‘ % Date

print FileName

f=open(FileName,‘a‘)

f.write(hostname+‘:\t‘+passwd+‘\n‘)

f.close()

def UpdatePwd(Linux_Dist,passwd,hostname):  //修改密码

cmd1="echo ubuntu:‘%s‘ | chpasswd"  % passwd

cmd2="echo root:‘%s‘ | chpasswd"  % passwd

List=[‘CentOS‘,‘Redhat‘]

if Linux_Dist==‘Ubuntu‘:

try:

ssh(hostname,cmd1)

color_print(‘%s User Ubuntu  Passwd Update Successful!‘ % hostname,‘yellow‘)

PwdFile(hostname,passwd)

except:

color_print(‘%s User Ubuntu  Passwd Update Faied!!!‘ % hostname,‘red‘)

elif Linux_Dist in List:

try:

ssh(hostname,cmd2)

color_print(‘%s User Root Passwd Update Successful!‘ % hostname,‘yellow‘)

PwdFile(hostname,passwd)

except:

color_print(‘%s User Root Passwd Update Faied!!!‘ % hostname,‘red‘)

else:

color_print(‘Unsupported operating system‘,‘red‘)

def main(hostname):

sys_cmd="cat /etc/issue | head -n 1 |awk ‘{print $1}‘"

passwd=MkPasswd()

color_print(‘Random Passwd: %s‘ % passwd,‘info‘)

Linux_Dist=ssh(hostname,sys_cmd)

color_print(‘%s linux distribution is: %s‘ % (hostname,Linux_Dist),‘info‘)

UpdatePwd(Linux_Dist,passwd,hostname)

class MyThread(threading.Thread):

def __init__(self,hostname):

self.hostname=hostname

threading.Thread.__init__(self)

def run(self):

main(self.hostname)   //调用main函数

if  __name__==‘__main__‘:

try:

with open(‘host‘) as f:      //读取远程主机ip地址

for i in f:

hostname=i.strip(‘\n‘)

t=MyThread(hostname)  //调用类MyThread,实现多线程执行

t.start()

except Exception,e:

color_print(e,‘red‘)

时间: 2024-10-25 05:55:15

python 随机远程主机修改密码的相关文章

Python 远程批量修改密码脚本

(一)注:pexpect模块需安装 #!/usr/bin/env python #coding:utf8 import pexpect import sys iplist = ['192.168.140.142','192.168.140.145'] ##定义主机列表 oldpasswd = '234567' ##旧密码 newpasswd = '1234567' ##新密码 while iplist: ip = iplist[-1] ##获取一个IP iplist.pop() ##列表去掉一个

Python简单实现产生随机位数的密码及注意事项小结

Python简单实现产生随机位数的密码 #!/usr/bin/python#coding:utf-8#产生任意位数的随机密码import random,string #导入随机数和字符串模块x=string.digits+string.letters #将数字和字母的字符串组合赋值给变量xpasswd='' #原始密码变量是空a=int(raw_input('请输入密码位数:')) #提示用户自定义密码位数,将字符串转成数字for i in range(a): #循环来实现自定义位数tmp=ra

【Python】Django auth 修改密码如何实现?

使用示例1.创建用户>>> from django.contrib.auth.models import User>>> user = User.objects.create_user('john', '[email protected]', 'johnpassword')# At this point, user is a User object that has already been saved# to the database. You can continu

python测试开发django-27.表单提交之post修改密码

前言 跟账号相关的功能一般是注册,登录,修改密码,密码找回功能,前面实现了登录和注册功能,本篇讲下修改密码功能实现 修改密码html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>注册页面</title> </head> <body> <h1>新用户注册!</h

百万年薪python之路 -- MySQL数据库之 永久修改字符串编码 与 忘了密码和修改密码

永久修改字符集编码的方法: 在mysql安装目录下创建一个my.ini(Windows下)文件,写入下面的配置,然后重启服务端. [client] #设置mysql客户端默认字符集 default-character-set=utf8 [mysql] # 设置mysql客户端默认字符集 default-character-set=utf8 user = 'root' password = '123' [mysqld] #设置3306端口 port = 3306 # 设置mysql的安装目录 ba

MySQL5.7修改密码

MySQL5.7出来蛮久了,今天用官方的RPM包安装玩了一遍,与值之前的版本有些差异,MARK下. OS PLATFORM:Centos 7.3 安装MySQL 5.7版本,官网http://dev.mysql.com/downloads/repo/yum/ rpm -ivh  http://dev.mysql.com/get/mysql57-community-release-el7-9.noarch.rpm YUM安装: yum -y install mysql-community-serv

mysql 5.1版本 修改密码,及远程登录mysql数据库

mysql创建用户并授权:   格式:grant 权限 on 数据库名.表名 to 用户@登录主机 identified by "用户密码"; grant[英][grɑ:nt]   承认; 同意; 准许; 授予;  例1:允许mk用户从localhost登录 mysql>  grant all on book.* to [email protected] identified by "123456";  #允许访问book数据库下的所有表, 只能访问book表

php+mysql实现简单登录注册修改密码网页

本文为php+mysql实现简单登录注册修改密码网页,原文网址:http://www.jb51.net/article/98673.htm,感谢写此代码的人,亲测有效.感谢感谢 对于php和mysql的连接在许多blog上都有说明,为了将mysql中的查询,修改,插入等操作掌握,本文介绍了一下如何采用mysql做一个登录注册修改密码的网页. 其中,如下 1.登录-即为对数据库中的内容给予查询,并验证html中的信息与数据库是否匹配:2.注册-即为对数据库中的内容进行插入,注册帐号与密码:3.修改

C#——WinForm修改密码

1 private void button2_Clic <!--[if !vml]--><!--[endif]-->k(object sender, EventArgs e) 2 { 3 //button2 : "确认"按钮 4 //修改密码 5 if (textBox1.Text == "") 6 { 7 MessageBox.Show("请输入原密码"); 8 } 9 else if (textBox2.Text ==