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 文件读写操作实例详解
Mar 12 Python
python多线程threading.Lock锁用法实例
Nov 01 Python
用Python实现协同过滤的教程
Apr 08 Python
编写自定义的Django模板加载器的简单示例
Jul 21 Python
Python实现多进程共享数据的方法分析
Dec 04 Python
python运行时强制刷新缓冲区的方法
Jan 14 Python
使用Python的datetime库处理时间(RPA流程)
Nov 24 Python
对tensorflow中cifar-10文档的Read操作详解
Feb 10 Python
如何理解python中数字列表
May 29 Python
scrapy框架携带cookie访问淘宝购物车功能的实现代码
Jul 07 Python
jupyter notebook更换皮肤主题的实现
Jan 07 Python
python实现网络五子棋
Apr 11 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自动判断字符集并转码的详解
2013/06/26 PHP
浅析php fwrite写入txt文件的时候用 \r\n不能换行的问题
2013/08/06 PHP
PHP获取服务器端信息的方法
2014/11/28 PHP
PHP数组函数知识汇总
2016/05/12 PHP
Zend Framework常用校验器详解
2016/12/09 PHP
javascript setAttribute, getAttribute 在不同浏览器上的不同表现
2010/08/05 Javascript
精通Javascript系列之数据类型 字符串
2011/06/08 Javascript
JavaScript怎么判断图片是否加载完成以便获取其尺寸
2014/05/08 Javascript
使用Plupload实现直接上传附件至七牛云存储
2014/12/26 Javascript
jQuery Easyui datagrid/treegrid 清空数据
2016/07/09 Javascript
Javascript OOP之面向对象
2016/07/31 Javascript
jQuery基于ajax实现页面加载后检查用户登录状态的方法
2017/02/10 Javascript
webpack4实现不同的导出类型
2019/04/09 Javascript
Vue路由前后端设计总结
2019/08/06 Javascript
js实现指定时间倒计时效果
2019/08/26 Javascript
vue iview的菜单组件Mune 点击不高亮的解决方案
2019/11/01 Javascript
JS前端模块化原理与实现方法详解
2020/03/17 Javascript
Python fileinput模块使用介绍
2014/11/30 Python
python连接数据库的方法
2017/10/19 Python
使用Python爬虫库requests发送请求、传递URL参数、定制headers
2020/01/25 Python
Python3爬虫中Ajax的用法
2020/07/10 Python
详解Python 函数参数的拆解
2020/09/02 Python
html5中的input新属性range使用记录
2014/09/05 HTML / CSS
个人自我评价分享
2013/12/20 职场文书
客户表扬信范文
2014/01/10 职场文书
音乐器材管理制度
2014/01/31 职场文书
四年级数学教学反思
2014/02/02 职场文书
十佳中学生事迹材料
2014/06/02 职场文书
会议室标语
2014/06/21 职场文书
2014年教师思想工作总结
2014/12/03 职场文书
布达拉宫导游词
2015/02/02 职场文书
欠款证明
2015/06/24 职场文书
严以律己专题学习研讨会发言材料
2015/11/09 职场文书
浅谈mysql返回Boolean类型的几种情况
2021/06/04 MySQL
Vue+TypeScript中处理computed方式
2022/04/02 Vue.js
详解如何使用Nginx解决跨域问题
2022/05/06 Servers