zoukankan      html  css  js  c++  java
  • python学习笔记-(十三)堡垒机

    1.课前准备:

    本次学习堡垒机相关知识;之前,需要安装Python的paramiko模块,该模块基于SSH用于连接远程服务器并执行相关操作。

    前提:

    python3.5程序安装到默认路径下并已添加path(如非默认,可根据报错信息自行百度)

    步骤:

    1:管理员方式打开cmd,切换到python安装路径的Scripts目录下:

    2:执行命令:

    pip3.5.exe install paramiko

    3.安装过程中可能会报错:

    执行以下命令更新下pip,然后继续第一步安装就哦了

    pip install --upgrade pip

    4:验证安装是否成功:打开cmd,进入python模式,输入import paramiko;无报错则代表成功;

    2.热身:

    SSH客户端:

    1)基于用户名密码连接:

    import paramiko #导入paramiko模块
    
    #创建SSH对象
    ssh = paramiko.SSHClient()
    #允许链接不在know_hosts文件的主机
    ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    #连接服务器
    ssh.connect(hostname='192.168.1.1',port=22,username='cc',password='123123')
    #执行命令
    stdin,stdout,stderr = ssh.exec_command('df')
    #获取命令结果
    result = stdout.read()
    #关闭连接
    ssh.close()

    2)基于公钥密钥连接:

    准备工作:

    1.linux下生成公钥密钥

    该命令将在/root/.ssh目录下面产生一对密钥id_rsa和公钥id_rsa.pub。(若没有安装ssh,则需要执行yum install openssh-clients)

    id_rsa.pub 公钥 ---改名为authorized_keys

    ssh-keygen#执行后一路enter即可

    2.将密钥copy到win下

    代码:

    import paramiko
    
    private_key = paramiko.RSAKey.from_private_key_file('id_rsa')  # 这里写密钥在win下的文件路径
    
    # 创建SSH对象
    ssh = paramiko.SSHClient()
    # 允许连接不在know_hosts文件中的主机
    ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    # 连接服务器
    ssh.connect(hostname='192.168.1.15', port=22, username='root', pkey=private_key)
    # 执行命令
    stdin, stdout, stderr = ssh.exec_command('df')
    # 获取命令结果
    result = stdout.read()
    #打印命令结果
    print(result.decode())
    # 关闭连接
    ssh.close()

    STFP客户端:

    用于连接远程服务器并执行上传下载

    1)基于用户名密码上传下载:

    import paramiko
     
    transport = paramiko.Transport(('hostname',22))
    transport.connect(username='cc',password='123123')
     
    sftp = paramiko.SFTPClient.from_transport(transport)
    # 将location.py 上传至服务器 /tmp/test.py
    sftp.put('/tmp/location.py', '/tmp/test.py')
    
    # 将remove_path 下载到本地 local_path
    sftp.get('remove_path', 'local_path')
     
    transport.close()

    2)基于公钥密钥下载:

    前提步骤同上

    import paramiko
     
    private_key = paramiko.RSAKey.from_private_key_file('/home/auto/.ssh/id_rsa')
     
    transport = paramiko.Transport(('hostname', 22))
    transport.connect(username='wupeiqi', pkey=private_key )
     
    sftp = paramiko.SFTPClient.from_transport(transport)
    # 将location.py 上传至服务器 /tmp/test.py
    sftp.put('/tmp/location.py', '/tmp/test.py')
    # 将remove_path 下载到本地 local_path
    sftp.get('remove_path', 'local_path')
     
    transport.close()

     

  • 相关阅读:
    轻便的客户端oracle instant client安装备忘(zt)
    OpenOffice3.0以服务方式运行在Windows平台(文件转换服务器解决方案)
    动态生成与编译(二)CodeDOM的类层次结构
    动态生成与编译(五)用CodeDOM生成一个完整的类(下)
    动态生成与编译(三)写一个面向过程的程序
    动态生成与编译(一)入门
    运行时设置数据库连接字符串
    动态生成与编译(四)用CodeDOM生成一个完整的类(上)
    世界级的《生化危机4 / Biohazard 4 / ResidentEvil 4》
    充满悬念的世界杯! 《FIFA World Cup GERMANY 2006》
  • 原文地址:https://www.cnblogs.com/cocc/p/5889007.html
Copyright © 2011-2022 走看看