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 相关文章推荐
Python中使用logging模块打印log日志详解
Apr 05 Python
Python的Urllib库的基本使用教程
Apr 30 Python
python爬虫框架scrapy实战之爬取京东商城进阶篇
Apr 24 Python
Python处理PDF及生成多层PDF实例代码
Apr 24 Python
python字符串string的内置方法实例详解
May 14 Python
OpenCV+python手势识别框架和实例讲解
Aug 03 Python
详解使用python绘制混淆矩阵(confusion_matrix)
Jul 14 Python
Django实现web端tailf日志文件功能及实例详解
Jul 28 Python
python安装scipy的步骤解析
Sep 28 Python
python函数中将变量名转换成字符串实例
May 11 Python
使用pandas模块实现数据的标准化操作
May 14 Python
Python 机器学习工具包SKlearn的安装与使用
May 14 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获取一年有几周以及每周开始日期和结束日期
2015/08/06 PHP
PHP中的Session对象如何使用
2015/09/25 PHP
PHP实现的DES加密解密实例代码
2016/04/06 PHP
PHP面向对象程序设计__tostring()和__invoke()用法分析
2019/06/12 PHP
些很实用且必用的小脚本代码
2006/06/26 Javascript
Javascript 继承机制的实现
2009/08/12 Javascript
细说浏览器特性检测(2)-通用事件检测
2010/11/05 Javascript
FF火狐下获取一个元素同类型的相邻元素实现代码
2012/12/15 Javascript
分离与继承的思想实现图片上传后的预览功能:ImageUploadView
2016/04/07 Javascript
Bootstrap的fileinput插件实现多文件上传的方法
2016/09/05 Javascript
JS实现的判断方法、变量是否存在功能示例
2020/03/28 Javascript
video.js 实现视频只能后退不能快进的思路详解
2018/08/09 Javascript
使用vue开发移动端管理后台的注意事项
2019/03/07 Javascript
Python中文竖排显示的方法
2015/07/28 Python
python+VTK环境搭建及第一个简单程序代码
2017/12/13 Python
python如何在列表、字典中筛选数据
2018/03/19 Python
对python 多个分隔符split 的实例详解
2018/12/20 Python
详解python中的hashlib模块的使用
2019/04/22 Python
Python 70行代码实现简单算式计算器解析
2019/08/30 Python
关于pytorch处理类别不平衡的问题
2019/12/31 Python
解决Opencv+Python cv2.imshow闪退问题
2020/04/24 Python
解决Windows下python和pip命令无法使用的问题
2020/08/31 Python
PyChon中关于Jekins的详细安装(推荐)
2020/12/28 Python
全球速卖通巴西站点:Aliexpress巴西
2016/08/24 全球购物
SKECHERS斯凯奇中国官网:来自美国的运动休闲品牌
2018/11/14 全球购物
土耳其新趋势女装购物网站:Addax
2020/01/07 全球购物
优秀士兵先进事迹
2014/02/06 职场文书
我的梦想演讲稿
2014/04/30 职场文书
职务说明书范文
2014/05/07 职场文书
生活部的活动方案
2014/08/19 职场文书
检讨书格式
2015/05/07 职场文书
帝企鹅日记观后感
2015/06/10 职场文书
2015年依法治校工作总结
2015/07/27 职场文书
HR必备:超全面的薪酬待遇管理方案!
2019/07/12 职场文书
python 如何在 Matplotlib 中绘制垂直线
2021/04/02 Python
Go缓冲channel和非缓冲channel的区别说明
2021/04/25 Golang