python错了怎么修改密码_python批量修改ssh密码

由于工作需要本文主结合了excel表格,对表格中的ssh密码进行批量修改

以下是详细代码(python3):

#!/usr/bin/env python

#-*-coding:utf-8-*-

import paramiko

import socket

import pandas as pd

def demo(Ip,user,old_password,new_password):

# 建立一个sshclient对象

ssh = paramiko.SSHClient()

# 允许将信任的主机自动加入到host_allow 列表,此方法必须放在connect方法的前面

ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())

# 调用connect方法连接服务器

#如果远程执行命令错误信息是b'the input device is not a TTY\n' 去掉docker exec -it 中的t就好了

try:

ssh.connect(hostname=Ip, port=22, username=user, password=old_password,timeout=5)

#ubuntu修改密码两种方法

#方法一

# command1 = "echo '%s:%s' | chpasswd"%(user,new_password)

# stdin, stdout, stderr = ssh.exec_command(command1)

# out, err = stdout.read(), stderr.read()

# if err != '':

# print(err)

#

# else:

# print(out)

# # 关闭连接

# ssh.close()

#方法二

command = "passwd %s" %(user)

stdin, stdout, stderr = ssh.exec_command(command)

#\n模拟回车 输两次密码

stdin.write(new_password + '\n' + new_password + '\n')

out, err = stdout.read(), stderr.read()

successful = 'password updated successfully'

#print(out,err)

if successful in str(err):

print(Ip + " 密码修改成功!")

else:

print('\033[31m错误:\033[0m' + str(err))

print(Ip + " 密码修改失败!")

# 关闭连接

ssh.close()

except paramiko.ssh_exception.AuthenticationException as e:

print(Ip + ' ' + '\033[31m账号密码错误!\033[0m')

with open('nossh.txt','a') as f:

f.write(Ip + '\n')

except socket.timeout as e:

print(Ip + ' ' + '\033[31m连接超时!\033[0m')

with open('timeoutssh','a') as f:

f.write(Ip + '\n')

def Red_Excel(IP):

import sys

import time

file = r'E:\xxx.xlsx'

pd.set_option('display.max_columns', None)

pd.set_option('display.max_colwidth', 1000)

n = pd.read_excel(file,sheet_name='xxx') #表格中的sheet名

#print(n.values)

#显示含某字段的特定行

n1 = (n.loc[n['IP']==IP])

if not n1.empty:

n2 = n1.values

ip = n2[0][1]

user = n2[0][4]

password_old = n2[0][5]

password_new = n2[0][22]

houtai = n2[0][16]

print('IP:%s 账号:%s 旧密码:%s 是否后台:%s 新密码:%s' % (ip, user, password_old, houtai,password_new))

demo(ip,user,password_old,password_new)

else:

print('记录表无此IP!')

if __name__ == "__main__":

with open('ip.txt') as f:

for i in f:

ip = i.split('\n')[0]

Red_Excel(ip)

此代码可以适当修改,进行单独的ssh密码修改。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值