解决Python paramiko 模块远程执行ssh 命令 nohup 不生效的问题

Python - paramiko 模块远程执行ssh 命令 nohup 不生效的问题解决

1、使用 paramiko 模块ssh 登陆到 linux 执行nohup命令不生效

# 执行命令
def command(ssh_config, cmd, result_print=None, nohup=False):
  ssh = paramiko.SSHClient()
  ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
  ssh.connect(hostname=ssh_config.hostname, port=ssh_config.port, username=ssh_config.username,
        password=ssh_config.password)
  print(ssh_config.hostname + '@' + ssh_config.username, ': ', cmd)
  stdin, stdout, stderr = ssh.exec_command(cmd)
  result = stdout.read()
  if result_print:
    lines = read_unicode(result)
    for line in lines:
      print(line)
  ssh.close()

因为执行完毕后,shell 会立即关闭通道

2、稍作修改,使用 invoke_shell

# 执行命令
def command(ssh_config, cmd, result_print=None, nohup=False):
  ssh = paramiko.SSHClient()
  ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
  ssh.connect(hostname=ssh_config.hostname, port=ssh_config.port, username=ssh_config.username,
        password=ssh_config.password)
  print(ssh_config.hostname + '@' + ssh_config.username, ': ', cmd)
  if nohup:
    cmd += ' & \n '
    invoke = ssh.invoke_shell()
    invoke.send(cmd)
    # 等待命令执行完成
    time.sleep(2)
  else:
    stdin, stdout, stderr = ssh.exec_command(cmd)
    result = stdout.read()
    if result_print:
      lines = read_unicode(result)
      for line in lines:
        print(line)
  ssh.close()

到此这篇关于解决Python paramiko 模块远程执行ssh 命令 nohup 不生效的问题的文章就介绍到这了,更多相关Python paramiko 模块远程执行ssh 命令 nohup 不生效内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • python使用paramiko模块实现ssh远程登陆上传文件并执行

    程序执行时需要读取两个文件command.txt和ipandpass.txt.格式如下: 复制代码 代码如下: command.txt:ThreadNum:1port:22local_dir:hello_mkdirremote_dir:hello_mkdiralter_auth:chmod 755 hello_mkdirexec_program:./hello_mkdir ipandpass.txt:ip username password 程序中的队列操作是修改的别的程序,写的确实不错.该程序

  • python通过paramiko复制远程文件及文件目录到本地

    最近写运维自动化平台,需要用python写很多的小功能模块. 这里就分享一个用Python的paramiko来实现功能的一段代码: 复制远程服务器上的文件及文件夹到本地目录. 解释一下什么叫paramiko: paramiko是用python写的一个模块,遵循SSH2协议,支持以加密和认证的方式,进行远程服务器的连接.利用该模块,可以方便的进行ssh连接和sftp协议进行sftp文件传输以及远程命令执行. 安装paramiko也很简单,我用的是python3,装好了pip,可以直接用pip来安装

  • windows下安装python paramiko模块的代码

    1.安装python  windows版本好:python-2.5.1.msi 2.安装pycrypto windows版本号:pycrypto-2.0.1.win32-py2.5.exe地址:http://tmrc.mit.edu/mirror/twisted/Dependencies/Win/pycrypto-2.0.1.win32-py2.5.exe 3. 安装MySQL DB Module for Python 2.5地址:http://sourceforge.net/projects/

  • Python Paramiko模块的安装与使用详解

    一.前言 常见的解决方法都会需要对远程服务器必要的配置,如果远程服务器只有一两台还好说,如果有N台,还需要逐台进行配置,或者需要使用代码进行以上操作时,上面的办法就不太方便了.而使用paramiko可以很好的解决以上问题,比起前面的方法,它仅需要在本地上安装相应的软件(python以及PyCrypto),对远程服务器没有配置要求,对于连接多台服务器,进行复杂的连接操作特别有帮助.下面本文就来详细的介绍Python Paramiko模块的安装与使用,一起学习学习吧.. 二.安装 安装paramik

  • Python Paramiko模块的使用实际案例

    本文研究的主要是Python Paramiko模块的使用的实例,具体如下. Windows下有很多非常好的SSH客户端,比如Putty.在python的世界里,你可以使用原始套接字和一些加密函数创建自己的SSH客户端或服务端,但如果有现成的模块,为什么还要自己实现呢.使用Paramiko库中的PyCrypto能够让你轻松使用SSH2协议. Paramiko的安装方法网上有很多这样的帖子,这里就不描述了.这里主要讲如何使用它.Paramiko实现SSH2不外乎从两个角度实现:SSH客户端与服务端.

  • python paramiko实现ssh远程访问的方法

    安装paramiko后,看下面例子: 复制代码 代码如下: import paramiko #设置ssh连接的远程主机地址和端口t=paramiko.Transport((ip,port))#设置登录名和密码t.connect(username=username,password=password)#连接成功后打开一个channelchan=t.open_session()#设置会话超时时间chan.settimeout(session_timeout)#打开远程的terminalchan.ge

  • python基于paramiko将文件上传到服务器代码实现

    python通过安装使用paramiko模块,将本地文件上传到服务器上 import paramiko import datetime import os hostname = '服务器ip' username = 'root' password = '服务器密码' port = 22#配置信息可以写到配置文件中 #loacl_file是要上传的本地文件路径 #remote_path是要上传到服务器上指定文件的路径 def upload(local_file, remote_path): try

  • 解决Python paramiko 模块远程执行ssh 命令 nohup 不生效的问题

    Python - paramiko 模块远程执行ssh 命令 nohup 不生效的问题解决 1.使用 paramiko 模块ssh 登陆到 linux 执行nohup命令不生效 # 执行命令 def command(ssh_config, cmd, result_print=None, nohup=False): ssh = paramiko.SSHClient() ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) ssh.con

  • python基于paramiko库远程执行 SSH 命令,实现 sftp 下载文件

    楔子 我们使用 Python 避免不了和 Linux 打交道,而有时我们需要执行一些 shell 命令.如果在本地的话,那么可以通过调用 os.system 或者 subprocess.Popen 来执行,但如果我们希望远程执行其它机器上的 shell 命令,这个时候该怎么做呢?下面我们就来推荐一个第三方库 paramiko,看看如何使用 Python 远程操作其它机器. paramiko 网络传输是遵循协议的,比如 SSH,paramiko 则是实现了 SSHv2 协议的一个 Python 第

  • 使用Python paramiko模块利用多线程实现ssh并发执行操作

    1.paramiko概述 ssh是一个协议,OpenSSH是其中一个开源实现,paramiko是Python的一个库,实现了SSHv2协议(底层使用cryptography). 有了Paramiko以后,我们就可以在Python代码中直接使用SSH协议对远程服务器执行操作,而不是通过ssh命令对远程服务器进行操作. 由于paramiko属于第三方库,所以需要使用如下命令先行安装 2.安装paramiko pip install paramiko 3.常用方法 connect():实现远程服务器的

  • Python paramiko 模块浅谈与SSH主要功能模拟解析

    疫情还没结束,小编只能宅在家里,哪哪也去不了,今天突发奇想给大家分享一篇教程关于Python paramiko 模块浅谈与SSH主要功能模拟解析. 大家都知道,通过SSH服务可以远程连接到Linux服务器,查看上面的日志状态,批量配置远程服务器,文件上传,文件下载等,Python的paramiko模块同样实现了这一功能. 首先我们需要安装这一模块,pycharm环境中如下操作 一,安装paramiko模块 PyCharm→Preferences→Project:项目名→Project Inter

  • Python paramiko模块的使用示例

    paramiko模块提供了ssh及sft进行远程登录服务器执行命令和上传下载文件的功能.这是一个第三方的软件包,使用之前需要安装. 1 基于用户名和密码的 sshclient 方式登录 # 建立一个sshclient对象 ssh = paramiko.SSHClient() # 允许将信任的主机自动加入到host_allow 列表,此方法必须放在connect方法的前面 ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) # 调用c

  • python3模拟实现xshell远程执行liunx命令的方法

    依赖包:pip install paramiko 源码demo: from time import * import paramiko # 定义一个类,表示一台远端linux主机 class Linux(object): # 通过IP, 用户名,密码,超时时间初始化一个远程Linux主机 def __init__(self, ip, username, password, timeout=30): self.ip = ip self.username = username self.passwo

  • 解决Python logging模块无法正常输出日志的问题

    废话少说,先上代码 File:logger.conf [formatters] keys=default [formatter_default] format=%(asctime)s - %(name)s - %(levelname)s - %(message)s class=logging.Formatter [handlers] keys=console, error_file [handler_console] class=logging.StreamHandler formatter=d

  • Java JSch远程执行Shell命令的方法

    目录 背景 JSch简介 使用示例 需要注意的点 参考文档 背景 项目需求,需要远程 ssh 登录到某个节点执行 shell 命令来完成任务.对于这种需求,如果不用 java 程序,直接 linux 的 ssh 命令就可以完成,但是在编码到程序中时需要相关的程序包来完成,本文主要介绍在 java 中如何使用 JSch 包实现 ssh 远程连接并执行命令. JSch 简介 JSch是Java Secure Channel的缩写.JSch是一个SSH2的纯Java实现.它允许你连接到一个SSH服务器

随机推荐