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获取脚本所在目录的正确方法
Apr 15 Python
Python实现自动添加脚本头信息的示例代码
Sep 02 Python
Python中的命令行参数解析工具之docopt详解
Mar 27 Python
python实现折半查找和归并排序算法
Apr 14 Python
Python文件操作之合并文本文件内容示例代码
Sep 19 Python
Python Requests模拟登录实现图书馆座位自动预约
Apr 27 Python
对python-3-print重定向输出的几种方法总结
May 11 Python
在IPython中进行Python程序执行时间的测量方法
Nov 01 Python
使用pycharm设置控制台不换行的操作方法
Jan 19 Python
python树莓派红外反射传感器
Jan 21 Python
Python进阶之全面解读高级特性之切片
Feb 19 Python
django多个APP的urls设置方法(views重复问题解决)
Jul 19 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 手机归属地查询 api
2010/02/08 PHP
深入PHP变量存储的详解
2013/06/13 PHP
php通过数组实现多条件查询实现方法(字符串分割)
2014/05/06 PHP
PHP使用Redis长连接的方法详解
2018/02/12 PHP
PHP fclose函数用法总结
2019/02/15 PHP
Yii框架通过请求组件处理get,post请求的方法分析
2019/09/03 PHP
javascript函数库-集合框架
2007/04/27 Javascript
jquery 图片轮换效果
2010/07/29 Javascript
extjs实现选择多表自定义查询功能 前台部分(ext源码)
2011/12/20 Javascript
js setTimeout 参数传递使用介绍
2013/08/13 Javascript
javasciprt下jquery函数$.post执行无响应的解决方法
2014/03/13 Javascript
JavaScript 作用域链解析
2014/11/13 Javascript
js获取图片宽高的方法
2015/11/25 Javascript
限制只能输入数字的实现代码
2016/05/16 Javascript
Node.js环境下编写爬虫爬取维基百科内容的实例分享
2016/06/12 Javascript
node网页分段渲染详解
2016/09/05 Javascript
Angular.JS中的this指向详解
2017/05/17 Javascript
Angular 2父子组件数据传递之@Input和@Output详解 (上)
2017/07/05 Javascript
微信小程序实现人脸识别
2018/05/25 Javascript
bootstrap table表格插件之服务器端分页实例代码
2018/09/12 Javascript
微信小程序一周时间表功能实现
2019/10/17 Javascript
weui中的picker使用js进行动态绑定数据问题
2019/11/06 Javascript
Python正则表达式常用函数总结
2017/06/24 Python
Python 多线程Threading初学教程
2017/08/22 Python
详解Django的model查询操作与查询性能优化
2018/10/16 Python
Python3运算符常见用法分析
2020/02/14 Python
动态设置django的model field的默认值操作步骤
2020/03/30 Python
python 动态绘制爱心的示例
2020/09/27 Python
25个CSS3动画按钮和菜单教程分享
2012/10/03 HTML / CSS
HTML5 drag和drop具体使用详解
2021/01/18 HTML / CSS
店长岗位的工作内容
2013/11/12 职场文书
温馨提示标语
2014/06/26 职场文书
不服从公司安排检讨书
2014/09/24 职场文书
2014年环保工作总结
2014/11/26 职场文书
学生自我评语
2015/01/04 职场文书
python爬虫框架feapde的使用简介
2021/04/20 Python