首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

无法使用Python Paramiko执行带有重定向多行输入的shell命令

问题:无法使用Python Paramiko执行带有重定向多行输入的shell命令

回答: Paramiko是一个用于Python的SSH库,可以用于远程执行命令和文件传输。然而,当使用Paramiko执行带有重定向和多行输入的shell命令时,可能会遇到一些问题。

在执行带有重定向和多行输入的shell命令时,需要注意以下几点:

  1. Paramiko的exec_command()方法只能执行单行命令,无法直接处理多行输入。如果需要执行多行输入的命令,可以考虑使用invoke_shell()方法。
  2. 使用invoke_shell()方法可以创建一个交互式的shell会话,可以通过发送命令和接收输出来模拟用户与远程服务器的交互。

下面是一个示例代码,演示如何使用Paramiko执行带有重定向和多行输入的shell命令:

代码语言:txt
复制
import paramiko

# 创建SSH客户端
client = paramiko.SSHClient()
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())

# 连接远程服务器
client.connect('your_server_ip', username='your_username', password='your_password')

# 创建交互式shell会话
shell = client.invoke_shell()

# 发送命令
shell.send('echo "Hello World" > output.txt\n')
shell.send('cat output.txt\n')
shell.send('exit\n')

# 接收输出
output = ''
while not output.endswith('$ '):
    output += shell.recv(1024).decode('utf-8')

# 打印输出
print(output)

# 关闭连接
client.close()

在上述示例中,首先创建了一个SSH客户端,并连接到远程服务器。然后,使用invoke_shell()方法创建了一个交互式的shell会话。通过shell.send()方法发送命令,可以使用重定向将命令的输出重定向到文件中。最后,通过shell.recv()方法接收输出,并将其打印出来。

需要注意的是,由于Paramiko的invoke_shell()方法创建的是一个交互式会话,因此需要通过发送exit命令来关闭会话。

希望以上内容对您有所帮助。如果需要了解更多关于Paramiko的信息,可以参考腾讯云的相关产品和文档:

  • 腾讯云SSH密钥对管理:https://cloud.tencent.com/document/product/213/20242
  • 腾讯云云服务器(CVM):https://cloud.tencent.com/product/cvm
  • 腾讯云云服务器实例规格:https://cloud.tencent.com/document/product/213/11518
  • 腾讯云云服务器操作指南:https://cloud.tencent.com/document/product/213/2936
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

使用 python 执行 shell 命令几种常用方式

使用 Python 编写自动化脚本时候,难免会需要执行一些基本 shell 命令,而 Python 执行 shell 命令方式有好几种,如果根据需要选择最适合方式显得非常重要,这篇文章就来总结和对比一下几种常见...Python 运行 shell 命令方式。...,必须将命令分解成列表传入才能执行,这个据说是为了安全起见所以默认是关闭字符串执行,不过在工作中使用时候当然都是用字符串方式执行了。...总结 以上就是常见 Python 执行 shell 命令方法,当然,上述都是内置库,也有第三方库可以实现 shell 执行,但是并不建议使用,毕竟官方提供内置库已经可以满足大部分场景。...我建议是当执行命令比较简单而且也不是经常调用时候,可以直接使用 os.system(),而如果是需要把执行命令方法写到函数中经常性调用,则应该使用 subprocess.Popen() 这种更加高级方法

3.1K10

借助Paramiko通过Python实现linux远程登陆及sftp操作

paramiko是一个用于做远程控制模块,使用该模块可以对远程服务器进行命令或文件操作,paramiko是用python语言写一个模块,遵循SSH2协议,支持以加密和认证方式,进行远程服务器连接...对于shell 命令,可以直接使用管道,或者将标准输出重定向到文件方法取得执行结果。 2....使用 subprocess 通过Python可以想到使用 os.popen,os.system,commands,subprocess 等一些命令执行库来间接获取系统信息 。...ssh命令几个问题: 需要额外安装 sshpass(如果不免密的话) 干扰信息太多,数据清理、格式化相当麻烦 代码实现不够优雅,可读性太差 ssh 连接不能复用,一次连接仅能执行一次命令 代码无法全平台...使用Paramiko 安装 python3 -m pip install paramiko 方法1:基于用户名和密码 sshclient 方式登录 该方法无法复用ssh连接。

3.6K20
  • 通过python 执行 nohup 不生效解决

    通过paramiko模块ssh登录linux,然后用exec_command方法执行带有nohupshell命令不生效,python脚本如下: import paramiko import time...,这可能是因为exec_command执行完之后立刻关闭通道原因,换用invoke_shell可以正常运行: import paramiko import time ssh = paramiko.SSHClient...补充知识:paramiko远程服务器nohup阻塞问题 一、需求描述: 需要来回切换多台服务器(脚本命令不太熟),就用了pythonparamiko模块进行远程连接服务器,控制程序停止和启动。...', port=22, username='xxx') # 执行命令 stdin, stdout, stderr = ssh.exec_command('cd ~/ ; nohup python3.6...,但是遇到会阻塞任务时,就无法生效,找了很多方法,最后发现这个比较有效。

    3.2K10

    Paramiko远程操作Linux服务器

    本篇将介绍一个Python第三方库Paramiko使用Paramiko,我们可以在Python脚本中进行SSH连接Linux服务器并远程执行Linux命令。...使用cd命令进行目录切换时不生效 当使用Paramiko库远程执行命令时,cd命令无法直接切换目录,这是因为cd是一个shell内置命令无法直接通过Paramiko执行,此时可以通过在执行命令时添加额外命令前缀来模拟...PS:shell内置命令就是有bash shell自身提供命令,而不是文件系统中执行脚本文件。...可以使用type命令来确定一个命令是否是内置命令: 二者区别在于:内置命令执行速度快,内置命令是当前shell环境一部分,就在当前进程内执行,减少了上下文切换;外部脚本文件执行速度慢,需要磁盘I/...通过类似的方法,可以模拟其他shell内置命令行为,但并非所有的shell内置命令都能以这种方式执行,因为某些命令可能依赖于shell上下文环境。

    29120

    Python建立ssh连接|paramiko实践

    之前写了一篇Python调用系统命令六种方法,但是执行linux命令时,需要在本地运行,如果想远程执行命令,就要用到另一个库paramiko。...paramikopython第三方库,遵循SSH2协议,支持以加密和认证方式,进行远程服务器连接,不仅可以远程执行shell命令,还可以实现服务器文件上传、下载。...Python警告 ssh = paramiko.SSHClient() ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) 使用实例 1...,比如实现一个类似xshell工具功能,登录以后可以输入命令回车后就返回结果,具体实现逻辑如下: import paramiko import os import sys # 建立一个socket...() # 下面就可以执行你所有的操作 # 关闭通道 channel.close() # 关闭链接 trans.close() 这里有一个简单paramiko方法封装,可以实现shell命令执行

    2.6K51

    python实现主机批量管理

    python中刚好提供了关于主机批量管理模块,今天就让我们来看看如何利用python实现主机批量管理 python提供主机批量管理模块主要有三个paramiko、fabric与pexpect,今天我们主要说是...paramiko模块,paramiko模块是第三方模块 安装:pip install paramiko或者yum install python-paramiko如果都安装失败的话可以使用源码安装 源码包下载地址...()                         //关闭连接 上传、下载: get_put = paramiko.Transport((ip,port)) //服务器ip和端口(使用SFTP时使用...while True:         shell_comd = raw_input('请输入执行命令: ')        #执行命令         if shell_comd == 'script_exit...)   #执行命令                 stderr = stderr.read()      #命令正确执行结果                 stdout = stdout.read

    1.4K20

    python使用paramiko实现ssh功能详解

    个人认为pythonparamiko模块是运维人员必学模块之一,其ssh登录功能是旅行居家必备工具。...有需要深入研究可以阅读官方文档。 paramiko模块提供了ssh及sft进行远程登录服务器执行命令和上传下载文件功能。...transport 方式登录 方法1是传统连接服务器、执行命令、关闭一个操作,有时候需要登录上服务器执行多个操作,比如执行命令、上传/下载文件,方法1则无法实现,可以通过如下方式来操作 # 实例化一个...() # 下面就可以执行你所有的操作,用select实现 # 对输入终端sys.stdin和 通道进行监控, # 当用户在终端输入命令后,将命令交给channel通道,这个时候sys.stdin就发生变化...使用paramiko实现ssh功能详解文章就介绍到这了,更多相关python paramiko实现ssh内容请搜索ZaLou.Cn以前文章或继续浏览下面的相关文章希望大家以后多多支持ZaLou.Cn

    17.1K11

    python模块-part2

    方式二: 下载源码 解压源码 进入目录 编译源码    python setup.py build 安装源码    python setup.py install 注:在使用源码安装时,需要使用到gcc...编译和python开发环境,所以,需要先执行: yum install gcc yum install python-devel 或 apt-get python-dev 安装成功后,模块会自动安装到...python setup.py install   # 进入python环境,导入paramiko检查是否安装成功 ii.使用模块 1....中mkdir dirname os.rmdir('dirname')    删除单级空目录,若目录不为空则无法删除,报错;相当于shell中rmdir dirname os.listdir('dirname...win->'nt'; Linux->'posix'os.system("bash command")  运行shell命令,直接显示 os.environ  获取系统环境变量 os.path.abspath

    53420

    SSH连接与自动化部署工具parami

    paramiko paramiko是基于Python实现SSH2远程安全连接,支持认证及密钥方法。可以实现远程命令执行,文件传输,中间SSH代理等功能,相对于Pexpect,封装层次更高。...send # cmds=['sudo su\n', 'cd /var/log\n', 'ls\n'] #利用send函数发送cmd到SSH server,添加'\n'做回车来执行shell命令。...注意不同情况,如果执行完telnet命令后,telnet换行符是\r\n # ssh=s.invoke_shell() #在SSH server端创建一个交互式shell,且可以按自己需求配置伪终端...env.path=' ' 定义在run/sudo/local使用$PATH环境变量 env.command_timeout=None env.timeout=10 env.shell=“/bin/bash...示例-Fabric部署Flask应用 示例1:它可以把当前源代码上传至服务器,并安装到一个预先存在 virtual 环境: from fabric.api import * # 使用远程命令用户名

    1.3K10

    网络工程师就算没有真机,也可以在ensp模拟器上玩python编程自动化!

    一、安装Paramiko模块 同样,由于Paramiko也是第三模块,所以我们需要在电脑上安装一下。 在CMD,输入命令:pip3 install paramiko ? ?...然后进入python 解释器,输入:import paramiko 如果没有报错,就说明安装没问题啦! ? ok,接下来,我们来说搭个简单环境,以后再搭批量。...往期推荐 Python安装教程(推荐一款不错Python编辑器) import paramiko import time ip = "192.168.56.100" user = "along" pw..., ip) #连接成功后,调用invoke_shell()方法来唤醒shell,也就是华为系统命令行,同时把它赋值给command,方便后续调用。...command = ssh.invoke_shell() #向设备发送命令,需要执行命令

    82310

    安服仔偷懒必备技能之自动化主机检查脚本

    二、python实现 先确定下流程,大概流程就是这四个: 连接服务器 上传脚本 执行脚本 回收数据 最重要是先连接上去,不然想得再好都没用,连接的话我用是pyparamiko,功能挺强大...,它自带了一个执行多条命令功能,在一条命令后面使用“;”就可以把命令隔开,看成是两条命令了,例如: stdin, stdout, stderr = ssh.exec_command('cd tmp;ls...')(向右滑动,查看更多) 它就会先cd到tmp这个目录下面,然后执行ls命令,到这无法上传下载文件,无法跳转目录两个坑基本上就填上了,这里贴下完整数据,表格格式是IP,端口,用户名,密码。.../bin/expect这个解释器,而这两个是没办法直接引用到上面的,也就是一个shell脚本无法直接使用两个解释器。...EOF给结束掉,也就是将上面的代码包进来(向右滑动,查看更多) 这样直接把过滤文件方式已经自动输入密码给完成了,其实如果想要实现那些自动上传脚本,执行这些也是能完成,只要解决了两个解释器命令能够在同一个脚本里面执行

    60930

    Python执行或远程执行shell命令

    最近想要实现通过脚本循环再Linux下运行shell命令,经过探索发现使用Python语言有几种解决方案,在此简单记录。...方案一:脚本本地执行命令Python中有两个库都可以实现运行shell命令效果: import subprocess import os 使用方法也很简单: # subprocess 使用方法 subprocess.call...("ls") # 执行ls命令 # os 使用方法 # 使用system模块执行linux命令时,如果执行命令没有返回值res值是256 # 如果执行命令有返回值且成功执行,返回值是0 res...SecureCRT脚本 该方法参见此前博文:SecureCRT 下 Python 脚本编写 参考文献 Python学习总结 06 paramiko 远程执行命令:https://www.cnblogs.com...命令:https://blog.csdn.net/laiahu/article/details/6697930 python执行linux命令三种方式:https://zhuanlan.zhihu.com

    7.2K20

    网工Python之路之paramiko 模块实验(一)初来乍到

    本次实验只需要用到 Linux ,透明交换机SW(启动即可,无需配置)、LSW1(Python 第三方库 paramiko 要操控设备。),其它 LSW未启动,后续实验再使用。...=False) # 开启交互式会话 command = ssh_client.invoke_shell() print ('已经成功登陆路由器' + ip) # 向路由器发出命令 command.send...带有decode("ascii")效果 不带decode("ascii")效果 再来看看@朱嘉盛大佬带来华为实验: 平台工具: 实验平台:WIN10 使用工具:eNSP v1.3.00.100...本次实验只需要用到 PC ,透明交换机SW1(启动即可,无需配置)、LSW1(Python 第三方库 paramiko 要操控设备。),其它 LSW未启动,后续实验再使用。...后续: 除了 Ensp 安装与使用Python 安装与使用,第三方库 paramiko 安装与使用外,可能还有如下这些疑问,有需要则后续再交流(看本文有没人理睬我= =哈)。

    1.6K10

    利用Python Paramiko开发

    1.Paramiko模块下demo.py程序     前面利用PythonParamiko模块可以进行SSH连接,以及用来传送文件(SFTP),但是无论是哪一种方式,连接都是短暂,并非是长连...,即一次执行一个命令或上传与下载一个文件,显然效率是不如直接使用Linux shellssh连接命令来进行连接。...远程主机需要进行连接,使用远程主机账户名为xpleaf,如下: xpleaf@xpleaf-machine:/mnt/hgfs/Python/day6/sorftwares/demp_test/paramiko...2.通过修改与demo.py相关模块来达到堡垒主机监控功能     堡垒主机可以监控运维人员在服务器上做命令操作,这里要做,只是可以监控运维人员在Linux服务器上执行命令操作,下面先给出这个监控程序示意图...(2)输入堡垒主机账号密码 ? (3)登陆成功并进入服务器连接列表选择界面 ? (4)选择连接相应服务器 ? (5)运维人员执行相关命令 ?

    1.1K10
    领券