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通过poll实现异步IO的方法
Jun 04 Python
Python黑魔法Descriptor描述符的实例解析
Jun 02 Python
Python语言描述随机梯度下降法
Jan 04 Python
解决pandas.DataFrame.fillna 填充Nan失败的问题
Nov 06 Python
python scp 批量同步文件的实现方法
Jan 03 Python
Python获取好友地区分布及好友性别分布情况代码详解
Jul 10 Python
Django 解决model 反向引用中的related_name问题
May 19 Python
计算Python Numpy向量之间的欧氏距离实例
May 22 Python
python中tab键是什么意思
Jun 18 Python
python如何实时获取tcpdump输出
Sep 16 Python
Python 循环读取数据内存不足的解决方案
May 25 Python
python自动化测试之Selenium详解
Mar 13 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守护进程 加linux命令nohup实现任务每秒执行一次
2011/07/04 PHP
保存到桌面、设为桌面且带图标的PHP代码
2013/11/19 PHP
老生常谈文本文件和二进制文件的区别
2017/02/27 PHP
php批量删除操作(数据访问)
2017/05/23 PHP
PHP判断json格式是否正确的实现代码
2017/09/20 PHP
PHP session垃圾回收机制实例分析
2019/06/28 PHP
PHP实现提高SESSION响应速度的几种方法详解
2019/08/09 PHP
PHP中SESSION过期设置
2021/03/09 PHP
两种常用的javascript数组去重方法思路及代码
2013/03/26 Javascript
jQuery UI插件自定义confirm确认框的方法
2015/03/20 Javascript
javascript实现链接单选效果的方法
2015/05/13 Javascript
详解javascript的变量与标识符
2016/01/04 Javascript
JS实现自动阅读单词(有道单词本添加功能)
2016/11/14 Javascript
Vue.js 2.x之组件的定义和注册图文详解
2018/06/19 Javascript
微信小程序实现自定义picker选择器弹窗内容
2020/05/26 Javascript
Vuejs 实现简易 todoList 功能 与 组件实例代码
2018/09/10 Javascript
JavaScript实现表单注册、表单验证、运算符功能
2018/10/15 Javascript
JS实现简单打字测试
2020/06/24 Javascript
vue style width a href动态拼接问题的解决
2020/08/07 Javascript
[01:34]传奇从这开始 2016国际邀请赛中国区预选赛震撼开启
2016/06/26 DOTA
Python  连接字符串(join %)
2008/09/06 Python
python求众数问题实例
2014/09/26 Python
python遍历数组的方法小结
2015/04/30 Python
Python中flatten( )函数及函数用法详解
2018/11/02 Python
对django xadmin自定义菜单的实例详解
2019/01/03 Python
python中下标和切片的使用方法解析
2019/08/27 Python
PyCharm 2020.2下配置Anaconda环境的方法步骤
2020/09/23 Python
python 多线程共享全局变量的优劣
2020/09/24 Python
涂鸦板简单实现 Html5编写属于自己的画画板
2016/07/05 HTML / CSS
html5实现图片转圈的动画效果——让页面动起来
2017/10/16 HTML / CSS
复古斯堪的纳维亚儿童服装:Baby go Retro
2017/09/09 全球购物
护理工作感言
2014/01/16 职场文书
大学生个人先进事迹材料范文
2014/05/03 职场文书
咖啡店创业计划书
2014/08/15 职场文书
小学生暑假安全保证书
2015/07/13 职场文书
Java常用工具类汇总 附示例代码
2021/06/26 Java/Android