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爬虫之神器正则表达式
Nov 06 Python
Python列表(list)、字典(dict)、字符串(string)基本操作小结
Nov 28 Python
python django 增删改查操作 数据库Mysql
Jul 27 Python
numpy返回array中元素的index方法
Jun 27 Python
TensorFlow打印tensor值的实现方法
Jul 27 Python
python3实现逐字输出的方法
Jan 23 Python
python实现飞船大战
Apr 24 Python
OpenCV+python实现实时目标检测功能
Jun 24 Python
详解Python 循环嵌套
Jul 09 Python
Python unittest装饰器实现原理及代码
Sep 08 Python
Django如何与Ajax交互
Apr 29 Python
Matplotlib绘制条形图的方法你知道吗
Mar 21 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
Terran剧情介绍
2020/03/14 星际争霸
php实现查看邮件是否已被阅读的方法
2013/12/03 PHP
php获取文件内容最后一行示例
2014/01/09 PHP
Codeigniter中禁止A Database Error Occurred错误提示的方法
2014/06/12 PHP
php数组索引的Key加引号和不加引号的区别
2014/08/19 PHP
thinkPHP中验证码的简单使用方法
2015/12/26 PHP
Yii框架实现邮箱激活的方法【数字签名】
2016/10/18 PHP
Yii2设置默认控制器的两种方法
2017/05/19 PHP
PHP基于rabbitmq操作类的生产者和消费者功能示例
2018/06/16 PHP
总结AJAX相关JS代码片段和浏览器模型
2007/08/15 Javascript
jQuery控制iFrame(实例代码)
2013/11/19 Javascript
JavaScript获取表单enctype属性的方法
2015/04/02 Javascript
jquery ajax双击div可直接修改div中的内容
2016/03/04 Javascript
JavaScript之事件委托实例(附原生js和jQuery代码)
2017/07/22 jQuery
JS/HTML5游戏常用算法之路径搜索算法 随机迷宫算法详解【普里姆算法】
2018/12/13 Javascript
vuex实现的简单购物车功能示例
2019/02/13 Javascript
微信小程序的tab选项卡的实现效果
2019/05/15 Javascript
JavaScript中的ES6 Proxy的具体使用
2019/06/16 Javascript
微信小程序JS加载esmap地图的实例详解
2019/09/04 Javascript
JavaScript中的this原理及6种常见使用场景详解
2020/02/14 Javascript
在vscode 中设置 vue模板内容的方法
2020/09/02 Javascript
Python实现在线程里运行scrapy的方法
2015/04/07 Python
python获取本地计算机名字的方法
2015/04/29 Python
简单的Apache+FastCGI+Django配置指南
2015/07/22 Python
jupyter安装小结
2016/03/13 Python
Python求一批字符串的最长公共前缀算法示例
2019/03/02 Python
HTML5是否真的可以取代Flash
2010/02/10 HTML / CSS
HTML5自定义视频播放器源码
2020/01/06 HTML / CSS
兰蔻法国官方网站:Lancôme法国
2020/02/22 全球购物
什么是封装
2013/03/26 面试题
实习生自荐信范文分享
2013/11/27 职场文书
公司领导班子对照材料
2014/08/18 职场文书
领导班子遵守党的政治纪律情况对照检查材料
2014/09/26 职场文书
2014年稽查工作总结
2014/12/20 职场文书
总经理助理岗位职责范本
2015/03/31 职场文书
国博复兴之路观后感
2015/06/02 职场文书