python批量修改ssh密码的实现


Posted in Python onAugust 08, 2019

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

以下是详细代码(python3):

'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:857662006 
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
#!/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密码修改。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
完美解决Python2操作中文名文件乱码的问题
Jan 04 Python
python字符串过滤性能比较5种方法
Jun 22 Python
修复CentOS7升级Python到3.6版本后yum不能正确使用的解决方法
Jan 26 Python
Python使用get_text()方法从大段html中提取文本的实例
Aug 27 Python
pytorch实现onehot编码转为普通label标签
Jan 02 Python
Python 2种方法求某个范围内的所有素数(质数)
Jan 31 Python
pytorch ImageFolder的覆写实例
Feb 20 Python
Python3如何在Windows和Linux上打包
Feb 25 Python
python 伯努利分布详解
Feb 25 Python
Python3 hashlib密码散列算法原理详解
Mar 30 Python
python如何使用代码运行助手
Jul 03 Python
python中random模块详解
Mar 01 Python
更新pip3与pyttsx3文字语音转换的实现方法
Aug 08 #Python
Python使用百度翻译开发平台实现英文翻译为中文功能示例
Aug 08 #Python
python按行读取文件并找出其中指定字符串
Aug 08 #Python
python实现PID算法及测试的例子
Aug 08 #Python
python开头的coding设置方法
Aug 08 #Python
pycharm 安装JPype的教程
Aug 08 #Python
Python学习笔记之lambda表达式用法详解
Aug 08 #Python
You might like
在PHP中使用FastCGI解析漏洞及修复方案
2015/11/10 PHP
实例讲解php数据访问
2016/05/09 PHP
laravel中命名路由的使用方法
2017/02/24 PHP
深入理解PHP的远程多会话调试
2017/09/21 PHP
juqery 学习之四 筛选过滤
2010/11/30 Javascript
javascript的函数、创建对象、封装、属性和方法、继承
2011/03/10 Javascript
中文字符串截取的js函数代码
2013/04/17 Javascript
JavaScript中几个重要的属性(this、constructor、prototype)介绍
2013/05/19 Javascript
jquery 清空file域示例(兼容个浏览器)
2013/10/11 Javascript
iscroll.js的上拉下拉刷新时无法回弹的解决方法
2016/02/18 Javascript
JS判断是否长按某一键的方法
2016/03/02 Javascript
基于javascript实现九宫格大转盘效果
2020/05/28 Javascript
nodejs搭建本地服务器并访问文件的方法
2017/03/03 NodeJs
利用jquery去掉时光轴头尾部线条的方法实例
2017/06/16 jQuery
解决vue2.0 element-ui中el-upload的before-upload方法返回false时submit()不生效问题
2018/08/24 Javascript
JavaScript解析JSON数据示例
2019/07/16 Javascript
vue项目中定义全局变量、函数的几种方法
2019/11/08 Javascript
JS图片懒加载的优点及实现原理
2020/01/10 Javascript
jquery实现两个div中的元素相互拖动的方法分析
2020/04/05 jQuery
vuex实现购物车的增加减少移除
2020/06/28 Javascript
python求加权平均值的实例(附纯python写法)
2019/08/22 Python
django有外键关系的两张表如何相互查找
2020/02/10 Python
Python openpyxl 插入折线图实例
2020/04/17 Python
Python在后台自动解压各种压缩文件的实现方法
2020/11/10 Python
三星美国官网:Samsung美国
2017/02/06 全球购物
CLR与IL分别是什么含义
2016/08/23 面试题
自荐信格式写作方法有哪些呢
2013/11/20 职场文书
物业管理毕业生个人的求职信
2013/11/30 职场文书
自我鉴定怎么写
2013/12/05 职场文书
一年级数学教学反思
2014/02/01 职场文书
运动会宣传口号
2014/06/09 职场文书
授权委托书协议书
2014/10/16 职场文书
2014年惩防体系建设工作总结
2014/12/01 职场文书
公司员工离职感言
2015/08/03 职场文书
Pyhton模块和包相关知识总结
2021/05/12 Python
java开发双人五子棋游戏
2022/05/06 Java/Android