python paramiko模块远程执行多条命令

最近一直在用python的paramiko执行远程命令,发现如果直接写的话在每条命令后加分号执行时会报错,如果不加分号,分一条命令一条命令地执行,起不到作用,如切换路径等,后面在网上找到了相关的方法,只要在exec_command(cmd,get_pty=True)在命令语句后加get_pty=True即可。代码如下:

    def exec_command(self,cmd):
        client = paramiko.SSHClient()
        try:
            client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
            client.connect(self.hostip, self.port, username=self.username, password=self.pwd, timeout=20)
            stdin, stdout, stderr = client.exec_command(cmd,get_pty=True)
            # logWriteToTxt(self.sitename + "执行"+cmd)
            res=""
            results = stdout.readlines()

            for line in results:
                res+=line
            try:
                err=stderr.readlines()
                for line in err:
                    res+=line
            except:
                pass
                # results = stdout.readlines()
            # logWriteToTxt("在" + self.sitename + "执行"+cmd + res)

            return res
        except:
            pass
        finally:
            client.close()

  

原文地址:https://www.cnblogs.com/linwenbin/p/10972632.html

时间: 2024-08-16 00:11:11

python paramiko模块远程执行多条命令的相关文章

python Paramiko模块远程推送文件

#!/usr/bin/python import paramiko def push_file(file):     f = open(file,'r')     running = 1     while running:         line = f.readline()         if line != '':             line = line.strip('\n')             list = line.split(' ')             ip 

Python paramiko模块 + 堡垒机

paremiko SSHClient 用于连接远程服务器并执行基本命令 基于用户名密码连接: import paramiko   # 创建SSH对象 ssh = paramiko.SSHClient() # 允许连接不在know_hosts文件中的主机 ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) # 连接服务器 ssh.connect(hostname='c1.salt.com', port=22, username='wu

python paramiko模块

paramiko模块是python中很重要的模块,他的功能呢主要分为两大块功能.一个是模拟SSH功能登录到远程主机上执行命令.一个是模拟SFTP功能传输文件. paramiko支持密码登陆方式和免密码的私钥登录方式. 密码登陆方式代码如下: #!/usr/bin/env python # coding:utf-8 import paramiko # 创建SSH对象 ssh = paramiko.SSHClient() # 访问未知主机时候的策略,允许连接不在know_hosts文件中的主机 ss

Python Paramiko模块安装和使用

1.简介 大家会发现,常见的解决方法都会需要对远程服务器必要的配置,如果远程服务器只有一两台还好说,如果有N台,还需要逐台进行配置,或者需要使用代码进行以上操作时,上面的办法就不太方便了. 使用paramiko可以很好的解决以上问题,比起前面的方法,它仅需要在本地上安装相应的软件(python以及PyCrypto),对远程服务器没有配置要求,对于连接多台服务器,进行复杂的连接操作特别有帮助. 2.安装 安装paramiko有两个先决条件,python和另外一个名为PyCrypto的模块. 通常安

supervisor的command执行两条命令

supervisor的进程的comand配置参数只能写一个命令 1.要执行多条命令,可以写个sh文件包含多条命令,然后sh -x   xxxx.sh,但这样又多了一个文件, 2.把所有命令放在字符串,然后用eval来执行,这样在shell窗口可以执行,但放在supervisor报找不到eval命令.比如: command = eval  "python -u app/utils_ydf/git_client.py&&gunicorn -w 9 -k gevent --bind 0

Linux 连续执行多条命令

每条命令使用";"隔开,则无论前边的命令执行成功与否都会继续执行下一条命令 这里,故意将第二条命令中的echo多写了一个o,命令执行出错,但并不影响后续命令的执行 可以这么想,如果用分号来间隔命令,就相当于将命令分隔在了不同的行,无论前一行的命令成功或失败,都不影响下一行命令的执行. $ echo 1; echoo 2; echo 3; echo 4 1 -bash: echoo: command not found 3 4 若命令间使用"&&"隔开

使用批处理文件同时打多个CMD窗口且执行多条命令

使用批处理文件时,可以用下面方法打打多个CMD窗口,并且每个窗口中执行多条命令. start 用来启动一个应用cmd /k 表示cmd后面的命令执行完后不关闭窗口.如果要在执行完成后关闭窗口可以用/c .详细请使用cmd/?查看"命令1&&命令2&&.." 将要执行的多条命令使用引号全部包起来,并且在命令间用&&分隔.如果只有一条命令则不用引号也可以. @echo off start cmd /k "cd/d d:\&&

python paramiko模块sftp异常:paramiko.ssh_exception.SSHException: EOF during negotiation

python paramiko模块ftp报错: Traceback (most recent call last):File "<stdin>", line 1, in <module>File "/usr/lib/python2.7/dist-packages/paramiko/sftp_client.py", line 170, in from_transportreturn cls(chan)File "/usr/lib/py

python 实现ssh远程执行命令 上传下载文件

使用密码远程执行命令 [[email protected] script]# cat daramiko_ssh.py  #!/usr/bin/env python #_*_coding:utf-8 _*_ __author__ = 'gaogd' import paramiko import sys,os host = sys.argv[1] user = 'root' password = 'ddfasdsasda2015' cmd = sys.argv[2] s = paramiko.SSH