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 05 Python
python实现马耳可夫链算法实例分析
May 20 Python
Python 多线程实例详解
Mar 25 Python
Python字符串拼接的几种方法整理
Aug 02 Python
Python实现打印螺旋矩阵功能的方法
Nov 21 Python
python版飞机大战代码分享
Nov 20 Python
基于Numpy.convolve使用Python实现滑动平均滤波的思路详解
May 16 Python
使用TFRecord存取多个数据案例
Feb 17 Python
Python流程控制常用工具详解
Feb 24 Python
Python脚本破解压缩文件口令实例教程(zipfile)
Jun 14 Python
Python读取Excel数据并生成图表过程解析
Jun 18 Python
Python一行代码实现自动发邮件功能
May 30 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 中include()与require()的对比
2006/10/09 PHP
php运行出现Call to undefined function curl_init()的解决方法
2010/11/02 PHP
php实现多张图片上传加水印技巧
2013/04/18 PHP
PHP 实现explort() 功能的详解
2013/06/20 PHP
执行、获取远程代码返回:file_get_contents 超时处理的问题详解
2013/06/25 PHP
php 截取GBK文档某个位置开始的n个字符方法
2017/03/08 PHP
PHP实现验证码校验功能
2017/11/16 PHP
javascript document.compatMode兼容性
2010/02/23 Javascript
50款非常棒的 jQuery 插件分享
2012/03/29 Javascript
jquery索引在使用中的一些困惑
2013/10/24 Javascript
js控制网页背景音乐播放与停止的方法
2015/02/06 Javascript
jQuery zclip插件实现跨浏览器复制功能
2015/11/02 Javascript
JS前端笔试题分析
2016/12/19 Javascript
浅谈angularjs $http提交数据探索
2017/01/20 Javascript
JS+HTML5 canvas绘制验证码示例
2018/12/05 Javascript
vue 使用 vue-pdf 实现pdf在线预览的示例代码
2020/04/26 Javascript
详谈Vue.js框架下main.js,App.vue,page/index.vue之间的区别
2020/08/12 Javascript
浅析我对JS延迟异步脚本的思考
2020/10/12 Javascript
解决vue项目axios每次请求session不一致的问题
2020/10/24 Javascript
[01:03:50]DOTA2-DPC中国联赛 正赛 CDEC vs DLG BO3 第二场 2月7日
2021/03/11 DOTA
Flask框架的学习指南之用户登录管理
2016/11/20 Python
python kmeans聚类简单介绍和实现代码
2018/02/23 Python
Python对List中的元素排序的方法
2018/04/01 Python
Python + selenium + requests实现12306全自动抢票及验证码破解加自动点击功能
2018/11/23 Python
python调用opencv实现猫脸检测功能
2019/01/15 Python
Django单元测试工具test client使用详解
2019/08/02 Python
win10安装python3.6的常见问题
2020/07/01 Python
mysql有关权限的表都有哪几个
2015/04/22 面试题
大学生校园创业计划书
2014/02/08 职场文书
竞选班长的演讲稿
2014/04/24 职场文书
药剂专业求职信
2014/06/20 职场文书
2014年计生标语
2014/06/23 职场文书
纪念九一八事变演讲稿:勿忘国耻
2014/09/14 职场文书
2015年度高中教师工作总结
2015/05/26 职场文书
《蚂蚁和蝈蝈》教学反思
2016/02/22 职场文书
《曾国藩家书》读后感——读家书,立家风
2019/08/21 职场文书