• python批量修改ssh密码


    由于工作需要本文主结合了excel表格,对表格中的ssh密码进行批量修改

    以下是详细代码(python3):

    #!/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 ' 去掉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)
    # 模拟回车 输两次密码
    stdin.write(new_password + ' ' + new_password + ' ')
    out, err = stdout.read(), stderr.read()
    successful = 'password updated successfully'
    #print(out,err)
    if successful in str(err):
    print(Ip + " 密码修改成功!")
    else:
    print('33[31m错误:33[0m' + str(err))
    print(Ip + " 密码修改失败!")
    # 关闭连接
    ssh.close()
    except paramiko.ssh_exception.AuthenticationException as e:
    print(Ip + ' ' + '33[31m账号密码错误!33[0m')
    with open('nossh.txt','a') as f:
    f.write(Ip + ' ')
    except socket.timeout as e:
    print(Ip + ' ' + '33[31m连接超时!33[0m')
    with open('timeoutssh','a') as f:
    f.write(Ip + ' ')
    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(' ')[0]
    Red_Excel(ip)


    此代码可以适当修改,进行单独的ssh密码修改。
  • 相关阅读:
    Linux文件属性
    [Oracle] Listener的动态注册
    jQuery easyUI Pagination控件自定义div分页(不用datagrid)
    桂林电子科技大学出校流量控制器Android版1.0.0
    php使用check box
    Python windows ping
    Python selenium chrome 环境配置
    Linux wget auto login and backup database
    PyQt4 ShowHMDB show sqlite3 with QTableWidget summary
    PyQt4 py2exe 打包 HardwareManager
  • 原文地址:https://www.cnblogs.com/misswangxing/p/10718718.html
Copyright © 2020-2023  润新知