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中常见的数据类型小结
Aug 29 Python
python删除服务器文件代码示例
Feb 09 Python
详解PyCharm安装MicroPython插件的教程
Jun 24 Python
python启动应用程序和终止应用程序的方法
Jun 28 Python
python使用pandas处理excel文件转为csv文件的方法示例
Jul 18 Python
使用python os模块复制文件到指定文件夹的方法
Aug 22 Python
python安装virtualenv虚拟环境步骤图文详解
Sep 18 Python
Python高级编程之继承问题详解(super与mro)
Nov 19 Python
python爬虫添加请求头代码实例
Dec 28 Python
python序列类型种类详解
Feb 26 Python
python实现无边框进度条的实例代码
Dec 30 Python
Python中Pyspider爬虫框架的基本使用详解
Jan 27 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
盘点被央视点名过的日本动画电影 一部比一部强
2020/03/08 日漫
神盾加密解密教程(三)PHP 神盾解密工具
2014/06/08 PHP
实例讲解PHP面向对象之多态
2014/08/20 PHP
PHP图片自动裁切应付不同尺寸的显示
2014/10/16 PHP
php实现的css文件背景图片下载器代码
2014/11/11 PHP
常见PHP数据库解决方案分析介绍
2015/09/24 PHP
Thinkphp实现站点静态化的方法详解
2017/03/21 PHP
PHP实现小程序批量通知推送
2018/11/27 PHP
ThinkPHP框架整合微信支付之Native 扫码支付模式二图文详解
2019/04/09 PHP
Nigma vs Liquid BO3 第一场2.13
2021/03/10 DOTA
科讯商业版中用到的ajax空间与分页函数
2007/09/02 Javascript
jQuery 通过事件委派一次绑定多种事件,以减少事件冗余
2010/06/30 Javascript
简单实用的全选反选按钮例子
2013/10/18 Javascript
VS2008中使用JavaScript调用WebServices
2014/12/18 Javascript
Bootstrap按钮下拉菜单组件详解
2016/05/10 Javascript
微信小程序开发中的疑问解答汇总
2017/07/03 Javascript
微信小程序渲染性能调优小结
2019/07/30 Javascript
基于js实现抽红包并分配代码实例
2019/09/19 Javascript
微信小程序工具函数封装
2019/10/28 Javascript
Python虚拟环境virtualenv的安装与使用详解
2017/05/28 Python
Python sqlite3事务处理方法实例分析
2017/06/19 Python
python 检查是否为中文字符串的方法
2018/12/28 Python
Python闭包和装饰器用法实例详解
2019/05/22 Python
Windows系统Python直接调用C++ DLL的方法
2019/08/01 Python
浅谈pytorch、cuda、python的版本对齐问题
2020/01/15 Python
Python3 shutil(高级文件操作模块)实例用法总结
2020/02/19 Python
Python生成器next方法和send方法区别详解
2020/05/30 Python
Python 为什么推荐蛇形命名法原因浅析
2020/06/18 Python
Node.js 和 Python之间该选择哪个?
2020/08/05 Python
python Autopep8实现按PEP8风格自动排版Python代码
2021/03/02 Python
美国高品质个性化珠宝销售网站:Jewlr
2018/05/03 全球购物
SIDESTEP荷兰:在线购买鞋子
2019/11/18 全球购物
类的核心特性有哪些
2014/01/01 面试题
2014年政风行风自查自纠报告
2014/10/21 职场文书
违反学校规则制度检讨书
2015/01/01 职场文书
关于童年的读书笔记
2015/06/26 职场文书