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 02 Python
PYTHON 中使用 GLOBAL引发的一系列问题
Oct 12 Python
浅谈django model的get和filter方法的区别(必看篇)
May 23 Python
Python中字典和集合学习小结
Jul 07 Python
python写一个md5解密器示例
Feb 23 Python
Python实现批量执行同目录下的py文件方法
Jan 11 Python
python采集百度搜索结果带有特定URL的链接代码实例
Aug 30 Python
pyftplib中文乱码问题解决方案
Jan 11 Python
关于ResNeXt网络的pytorch实现
Jan 14 Python
如何用 Python 子进程关闭 Excel 自动化中的弹窗
May 07 Python
只用20行Python代码实现屏幕录制功能
Jun 02 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
虫族 ZERG 概述
2020/03/14 星际争霸
php 检查电子邮件函数(自写)
2014/01/16 PHP
IIS6.0 开启Gzip方法及PHP Gzip函数分享
2014/06/08 PHP
Laravel框架中队列和工作(Queues、Jobs)操作实例详解
2020/04/06 PHP
关于JavaScript定义类和对象的几种方式
2010/11/09 Javascript
JavaScript OOP面向对象介绍
2010/12/02 Javascript
jQuery关于导航条背景切换效果实现示例
2013/09/04 Javascript
js中通过split函数分割字符串成数组小例子
2013/09/21 Javascript
JS中怎样判断undefined(比较不错的方法)
2014/03/27 Javascript
JavaScript中的函数的两种定义方式和函数变量赋值
2014/05/12 Javascript
jquery计算鼠标和指定元素之间距离的方法
2015/06/26 Javascript
jQuery Easy UI中根据第一个下拉框选中的值设置第二个下拉框是否可以编辑
2016/11/29 Javascript
解析ajaxFileUpload 异步上传文件简单使用
2016/12/30 Javascript
用vue的双向绑定简单实现一个todo-list的示例代码
2017/08/03 Javascript
Vue 第三方字体图标引入 Font Awesome的方法
2018/09/28 Javascript
Vue实现base64编码图片间的切换功能
2019/12/04 Javascript
Python实现去除代码前行号的方法
2015/03/10 Python
Django返回json数据用法示例
2016/09/18 Python
python 换位密码算法的实例详解
2017/07/19 Python
浅谈python下tiff图像的读取和保存方法
2018/12/04 Python
在python中实现将一张图片剪切成四份的方法
2018/12/05 Python
Django Rest framework认证组件详细用法
2019/07/25 Python
浅谈Python 命令行参数argparse写入图片路径操作
2020/07/12 Python
Python读写Excel表格的方法
2021/03/02 Python
美国最大婚纱连锁店运营商:David’s Bridal
2019/03/12 全球购物
波兰家居和花园家具专家:4Home
2019/05/26 全球购物
Linux管理员面试经常问道的相关命令
2013/04/29 面试题
程序员跳槽必看面试题总结
2013/06/28 面试题
电大自我鉴定范文
2013/10/01 职场文书
人力资源专员岗位职责
2014/01/30 职场文书
2014领导班子四风剖析对照检查材料思想汇报
2014/09/20 职场文书
教师四风自我剖析材料
2014/09/30 职场文书
2016年学校招生广告语
2016/01/28 职场文书
2016年学校爱国卫生月活动总结
2016/04/06 职场文书
源码解读Spring-Integration执行过程
2021/06/11 Java/Android
SQL基础的查询语句
2021/11/11 MySQL