浅谈python之自动化运维(Paramiko)

  


  

  

使用开源的Paramiko,我们就可以用Python代码中通过SSH协议对远程服务器执行操作,不需要手敲SSH命令,从而实现自动化运维。
  

  

ssh是一个协议,OpenSSH是其中一个开源实现,paramiko库,实现了SSHv2协议(底层使用加密)。

  

项目文档:点我跳转
  扩展:ssh协议,OpenSSH

  


  

  

1,安装

        pip安装paramiko   之前      

2,导入模块

        进口paramiko   之前      

3,使用

        def initSshClinet ():   “‘   初始化,SSH连接账号密码登录服务器   返回:sshClinet   “‘   ip=" " #服务器ip地址   sshClinet=paramiko.SSHClient ()   sshClinet.set_missing_host_key_policy (paramiko.AutoAddPolicy ())   sshClinet。22岁的连接(ip用户名、pw超时=360)   返回sshClinet   之前            def exeCommond(指令):   “‘   执行shell命令   “‘   stdin、stdout stderr=sshClient.exec_command(命令)   outStr=stdout.readlines ()   print (" \ n " . join (outStr))   之前            def sftpUploadFile (localPath remotePath):   #获取SFTP实例   sftp=sshClinet.open_sftp ()   #执行上传动作   sftp。put (localPath remotePath)      之前            def sftpDownloadFile (localPath remotePath):   #获取SFTP实例   sftp=sshClinet.open_sftp ()   #执行下载动作   sftp。get (localPath remotePath)   之前      

末尾记得要关闭连接

        sshClient.close ()   之前      

也可以使用私钥登录:

        #配置私人密钥文件位置   私人=paramiko.RSAKey.from_private_key_file('/用户/ch/. ssh/id_rsa)      #实例化SSHClient   客户=paramiko.SSHClient ()      #自动添加策略,保存服务器的主机名和密钥信息,如果不添加,那么不再本地know_hosts文件中记录的主机将无法连接   client.set_missing_host_key_policy (paramiko.AutoAddPolicy ())      #连接SSH服务端,以用户名和密码进行认证   client.connect(主机名=10.0.0.1”表示,端口=22日用户名=?pkey=私人)      之前      


  

  

paramiko包含两个核心组件:SSHClient和SFTPClient。

  
      <李> SSHClient的作用类似于Linux的ssh命令,是对ssh会话的封装,该类封装了传输(运输),通道(频道)及SFTPClient建立的方法(open_sftp),通常用于执行远程命令。   <李> SFTPClient的作用类似与Linux的sftp命令,是对sftp客户端的封装,用以实现远程文件操作,如文件上,传下载,修改文件权限等操作。   
  

           名词   解释               通道   是一种套接字类,一种安全的SSH传输通道         运输   是一种加密的会话,使用时会同步创建了一个加密的隧道(通道),这叫个隧道做渠道         会话   是客户端与服务器保持连接的对象,用连接()/start_client ()/start_server()开始会话            

  

<强> SSHClient常用的方法介绍
  

  

connect():实现远程服务器的连接与认证,对于该方法只有主机名是必传参数。

  

           参数   说明               主机名   连接的目标主机         端口=SSH_PORT   指定端口         用户名=没有   验证的用户名         密码=没有   验证的用户密码         pkey=没有   私钥方式用于身份验证         key_filename=没有   一个文件名或文件列表,指定私钥文件         timeout=没有   可选的tcp连接超时时间         allow_agent=True   是否允许连接到ssh代理,默认为真正的允许         look_for_keys=True   是否在~/sh中搜索私钥文件,默认为真正的允许         压缩=False   是否打开压缩            

  

set_missing_host_key_policy():设置远程服务器没有在know_hosts文件中记录时的应对策略。传入MissingHostKeyPolicy的子类,目前支持三种策略:
  

  

浅谈python之自动化运维(Paramiko)