在python中利用paramiko实现执行服务器命令

  介绍

在python中利用paramiko实现执行服务器命令?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

封装连接

@staticmethod   def连接(ip、server_user server_port, server_path):   “““   连接服务器      参数:   返回:   “““   ssh=paramiko.SSHClient ()   private_key=paramiko.RSAKey.from_private_key_file (& # 39; {} . ssh/id_rsa # 39; .format (server_path))   ssh.set_missing_host_key_policy (paramiko.AutoAddPolicy ())   试一试:   ssh。连接(ip、端口=server_port,用户名=server_user pkey=private_key超时=5,allow_agent=True)   返回ssh   除了例外e:   app.logger.info (& # 39; connect_error信息{}& # 39;.format (e.__repr__ ()))      返回{   & # 39;结果# 39;:1,   & # 39;ip # 39;: ip,   & # 39;味精# 39;:e.__repr__ (),   }

在服务器执行命令

 def fabric_run_cmd(自我、ip、server_user server_port, server_path, cmd):
  “““
  批量在服务器执行命令
  
  返回:
  “““
  康涅狄格州=自我。连接(ip、server_user server_port server_path)
  试一试:
  如果类型(康涅狄格州)==dict类型:
  返回康涅狄格州
  其他:
  stdin、stdout stderr=conn.exec_command (cmd)
  app.logger.info (& # 39; fabric_run_cmd_stdout信息{}& # 39;.format (stdout.readlines ()))
  app.logger.info (& # 39; fabric_run_cmd_stderr信息{}& # 39;.format (stderr.readlines ()))
  频道=stdout.channel
  状态=channel.recv_exit_status ()
  conn.close ()
  app.logger.info (& # 39; fabric_run_cmd_status信息{}& # 39;.format(状态)
  如果状态==0:
  返回{
  & # 39;ip # 39;: ip,
  & # 39;味精# 39;:& # 39;执行成功& # 39;,
  & # 39;结果# 39;:0
  }
  其他:
  返回{
  & # 39;ip # 39;: ip,
  & # 39;味精# 39;:stderr.readlines (),
  & # 39;结果# 39;:1
  }
  除了例外e:
  app.logger.info (& # 39; fabric_run_cmd_error信息{}& # 39;.format (e.__repr__ ()))
  返回{
  & # 39;ip # 39;: ip,
  & # 39;味精# 39;:e.__repr__ (),
  & # 39;结果# 39;:1
  }

将文件发送到服务器

 def fabric_put_file(自我、ip、src_file dst_file, server_user, server_port, server_path):
  “““
  发送文件到服务器
  
  返回:
  “““
  康涅狄格州=自我。连接(ip、server_user server_port server_path)
  如果类型(康涅狄格州)==dict类型:
  返回康涅狄格州
  其他:
  试一试:
  ftp=conn.open_sftp ()
  ftp。把(dst_file src_file) #发送文件之前先判断有没有目标文件夹如果没有现在服务器上创建文件夹
  ftp.close() #在此判断文件是否发送成功
  返回{
  & # 39;ip # 39;: ip,
  & # 39;味精# 39;:& # 39;上传成功& # 39;,
  & # 39;结果# 39;:0
  }
  除了例外e:
  app.logger.info (& # 39; fabric_put_file_error信息{}& # 39;.format (e.__repr__ ()))
  返回{
  & # 39;ip # 39;: ip,
  & # 39;味精# 39;:e.__repr__ (),
  & # 39;结果# 39;:1
  }

关于在python中利用paramiko实现执行服务器命令问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注行业资讯频道了解更多相关知识。

在python中利用paramiko实现执行服务器命令