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调用shell的方法
Nov 20 Python
Python编程之属性和方法实例详解
May 19 Python
简单上手Python中装饰器的使用
Jul 12 Python
python运行其他程序的实现方法
Jul 14 Python
python web.py开发httpserver解决跨域问题实例解析
Feb 12 Python
Python3自动签到 定时任务 判断节假日的实例
Nov 13 Python
python 函数内部修改外部变量的方法
Dec 18 Python
Python SQLAlchemy入门教程(基本用法)
Nov 11 Python
pytorch 求网络模型参数实例
Dec 30 Python
python 识别登录验证码图片功能的实现代码(完整代码)
Jul 03 Python
OpenCV图片漫画效果的实现示例
Aug 18 Python
Sentry错误日志监控使用方法解析
Nov 12 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
网页游戏开发入门教程二(游戏模式+系统)
2009/11/02 PHP
PHP中单引号与双引号的区别分析
2014/08/19 PHP
在win7中搭建Linux+PHP 开发环境
2014/10/08 PHP
PHP file_get_contents函数读取远程数据超时的解决方法
2015/05/13 PHP
php使用CutyCapt实现网页截图保存的方法
2016/10/03 PHP
tp5(thinkPHP5框架)使用DB实现批量删除功能示例
2019/05/28 PHP
javaScript 简单验证代码(用户名,密码,邮箱)
2009/09/28 Javascript
基于jQuery的可以控制左右滚动及自动滚动效果的代码
2010/07/25 Javascript
JS分页控件 可用于无刷新分页
2013/07/23 Javascript
JQuery+CSS实现图片上放置按钮的方法
2015/05/29 Javascript
JavaScript简单实现弹出拖拽窗口(一)
2016/06/17 Javascript
Node.js DES加密的简单实现
2016/07/07 Javascript
如何抽象一个Vue公共组件
2017/10/17 Javascript
使用Vue完成一个简单的todolist的方法
2017/12/01 Javascript
JavaScript中call和apply方法的区别实例分析
2018/08/03 Javascript
使用layui 渲染table数据表格的实例代码
2018/08/19 Javascript
js实现unicode码字符串与utf8字节数据互转详解
2019/03/21 Javascript
js常用正则表达式集锦
2019/05/17 Javascript
基于vue写一个全局Message组件的实现
2019/08/15 Javascript
微信小程序实现横向滚动导航栏效果
2019/12/12 Javascript
Vue实现穿梭框效果
2020/09/30 Javascript
小程序角标的添加及绑定购物车数量进行实时更新的实现代码
2020/12/07 Javascript
JavaScript 防盗链的原理以及破解方法
2020/12/29 Javascript
Centos5.x下升级python到python2.7版本教程
2015/02/14 Python
python模拟鼠标点击和键盘输入的操作
2019/08/04 Python
在flask中使用python-dotenv+flask-cli自定义命令(推荐)
2020/01/05 Python
用HTML5 实现橡皮擦的涂抹效果的教程
2015/05/11 HTML / CSS
赫里福德的一家乡村零售商店:Philip Morris & Son
2017/06/25 全球购物
客户代表实习人员自我鉴定
2013/09/27 职场文书
教你怎样写好自我评价
2013/10/05 职场文书
办公室保洁员岗位职责
2013/12/02 职场文书
承诺书怎么写
2014/03/26 职场文书
学生违反校规检讨书
2014/10/28 职场文书
保安2014年终工作总结
2014/12/06 职场文书
Go语言基础map用法及示例详解
2021/11/17 Golang
Spring Boot 的创建和运行示例代码详解
2022/07/23 Java/Android