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删除nginx缓存文件示例(python文件操作)
Mar 26 Python
python实现简单的socket server实例
Apr 29 Python
Python实现对一个函数应用多个装饰器的方法示例
Feb 09 Python
Python 获取中文字拼音首个字母的方法
Nov 28 Python
详解Python with/as使用说明
Dec 13 Python
详解js文件通过python访问数据库方法
Mar 03 Python
对Python 简单串口收发GUI界面的实例详解
Jun 12 Python
django做form表单的数据验证过程详解
Jul 26 Python
Python函数生成器原理及使用详解
Mar 12 Python
Django中从mysql数据库中获取数据传到echarts方式
Apr 07 Python
Python 合并拼接字符串的方法
Jul 28 Python
python实现网页录音效果
Oct 26 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
为了这两部电子管收音机,买了6套全新电子管和10粒刻度盘灯泡
2021/03/02 无线电
php下利用curl判断远程文件是否存在的实现代码
2011/10/08 PHP
PHP SPL使用方法和他的威力
2013/11/12 PHP
HR vs ForZe BO3 第一场 2.13
2021/03/10 DOTA
类似CSDN图片切换效果脚本
2009/09/17 Javascript
javascript转换字符串为dom对象(字符串动态创建dom)
2010/05/10 Javascript
Jquery选中或取消radio示例
2013/09/29 Javascript
JavaScript模块随意拖动示例代码
2014/05/27 Javascript
微信小程序入门教程
2016/11/18 Javascript
JS经典正则表达式笔试题汇总
2016/12/15 Javascript
Vue 使用 Mint UI 实现左滑删除效果CellSwipe
2018/04/27 Javascript
layui操作列按钮个数和文字颜色的判断实例
2019/09/11 Javascript
微信小程序添加插屏广告并设置显示频率(一天一次)
2019/12/06 Javascript
JS中FormData类实现文件上传
2020/03/27 Javascript
vue实现购物车列表
2020/06/30 Javascript
解决vue+webpack项目接口跨域出现的问题
2020/08/10 Javascript
js和jquery判断数据类型的4种方法总结
2020/08/28 jQuery
React Ant Design树形表格的复杂增删改操作
2020/11/02 Javascript
python通过字典dict判断指定键值是否存在的方法
2015/03/21 Python
使用rst2pdf实现将sphinx生成PDF
2016/06/07 Python
python 筛选数据集中列中value长度大于20的数据集方法
2018/06/14 Python
设置python3为默认python的方法
2018/10/31 Python
Python 判断图像是否读取成功的方法
2019/01/26 Python
python实现统计代码行数的小工具
2019/09/19 Python
在python中利用pycharm自定义代码块教程(三步搞定)
2020/04/15 Python
Django后端按照日期查询的方法教程
2021/02/28 Python
Adobe Html5 Extension开发初体验图文教程
2017/11/14 HTML / CSS
国际贸易个人求职信范文
2014/01/04 职场文书
大二学期个人自我评价
2014/01/13 职场文书
法院授权委托书范文
2014/08/02 职场文书
2015年化验员工作总结
2015/04/10 职场文书
2015年国庆晚会主持词
2015/07/01 职场文书
致运动员加油稿
2015/07/21 职场文书
浅谈JavaScript浅拷贝和深拷贝
2021/11/07 Javascript
日本官方排名前10的动漫,名侦探柯南上榜,第一是一部创造历史的动漫
2022/03/18 日漫
JavaScript parseInt0.0000005打印5原理解析
2022/07/23 Javascript