使用python子进程和ssh读取远程文件?

     2023-02-23     16

关键词:

【中文标题】使用python子进程和ssh读取远程文件?【英文标题】:Read remote file using python subprocess and ssh? 【发布时间】:2011-10-31 10:25:02 【问题描述】:

如何使用子进程和 ssh 从大型远程文件中读取数据?

【问题讨论】:

您想通过 SSH 在远程服务器上运行需要访问文件的程序吗?您想使用 SCP 将文件复制到您的计算机吗?您希望 Python 能够直接读取或写入文件吗?您需要提供更多详细信息,说明您正在尝试做什么,以便任何人都能回答这个问题。 在我的程序中,我想列出远程服务器上特定目录下的文件。然后用户选择对这些文件之一进行操作。这些文件很大,所以我希望能够即时读取(以避免内存问题),即逐行读取。如果线路满足条件;对该行执行某些操作,直到到达文件末尾。 【参考方案1】:

为了提高性能,这在文件很大时很重要,有 rsync。有关确切改进的更多信息,请参阅以下帖子和 Rafa 的回答: How does `scp` differ from `rsync`?

然后使用 rsync 的算法将如下所示

import subprocess

subprocess.Popen(["rsync", host-ip+'/path/to/file'],stdout=subprocess.PIPE)
for line in ssh.stdout:
    line  # do stuff

【讨论】:

【参考方案2】:
import subprocess
ssh = subprocess.Popen(['ssh', 'user@host', 'cat', 'path/to/file'],
                       stdout=subprocess.PIPE)
for line in ssh.stdout:
    line  # do stuff

【讨论】:

Ross,我有你建议的完全相同的命令,但它只读取第一行而不读取其他行。如何让它读取文件中的所有行?跨度> 我应该说,通过使用上面的内容,文件内容是逐字符读取的。我怎样才能完整地读取整行? "split('\n')" 似乎不起作用.. ssh.stdout 之后删除.readline(),你想循环输出而不是第一行。 @JordanTrudgett 嗯,我说的时候提交了编辑,但我找不到任何关于它被拒绝的信息。再次提交。 @RossPatterson 这会影响服务器带宽吗?【参考方案3】:

使用iterreadline 读取每一行:

for i in iter(f.stdout.readline,"")

【讨论】:

【参考方案4】:

上面的答案会起作用,但您必须设置您的 ssh 登录以在 your boxes 之间不使用密码。还有其他方法可以使用 Python 在计算机之间传输文件。一种无需身份验证的简单方法是设置 apache 服务器并使用http request。

【讨论】:

通过 ssh 有条件地运行子进程,同时将输出附加到(可能是远程的)文件

...运行的脚本。我想将此脚本作为我的主机上的后台进程与使用ssh的远程计算机一起启动,并将stdo 查看详情

python:在线程中读取子进程输出

...ads【发布时间】:2012-04-0608:56:54【问题描述】:我有一个使用subprocess.Popen调用的可执行文件。然后,我打算使用一个线程通过标准输入向它提供一些数据,该线程从队列中读取其值,稍后将填充到另一个线程中。输出应在另一... 查看详情

使用 Python 子进程的 ssh 多个命令

】使用Python子进程的ssh多个命令【英文标题】:MultiplecommandswithsshusingPythonsubprocess【发布时间】:2018-12-0905:55:35【问题描述】:我需要使用subprocess模块在ssh会话中执行多个shell命令。我可以一次执行一个命令:subprocess.Popen(["ssh","... 查看详情

使用子进程从 python 执行时,ssh 未被识别为命令?

】使用子进程从python执行时,ssh未被识别为命令?【英文标题】:sshnotrecognizedasacommandwhenexecutedfrompythonusingsubprocess?【发布时间】:2018-12-1121:41:56【问题描述】:这是我的代码-importsubprocessimportsysHOST="xyz3511.uhc.com"#Portsarehandledin~/.ss... 查看详情

远程服务器上的子进程

...server【发布时间】:2015-10-0705:45:36【问题描述】:我正在使用此代码在远程服务器上执行命令。importsubprocessimportsysCOMMAND="ls"ssh=subprocess.Popen(["ssh","%s"%HOST,COMMAND],shell=False,stdout=subprocess.PIPE,stderr= 查看详情

如何从 Python 中的子进程向 SSH 传递命令

...布时间】:2017-08-0612:06:54【问题描述】:我在Python2.7.6中使用了subprocess模块来建立SSH。我意识到不建议这样做,但我无法安装其他PythonSSH库,例如paramiko和fabric。我只是想知道是否有人不介意告诉我现在该怎么做sshPro 查看详情

Python asyncio子进程连续写入stdin和读取stdout/stderr

】Pythonasyncio子进程连续写入stdin和读取stdout/stderr【英文标题】:Pythonasynciosubprocesswritestdinandreadstdout/stderrcontinuously【发布时间】:2019-08-3016:03:26【问题描述】:我目前正在执行python3asyncio中的子进程任务。我的代码只是写入标准... 查看详情

带有管道和大文件的 Python 子进程

...【发布时间】:2011-01-2211:16:21【问题描述】:我正在尝试使用python+ffmpeg+oggenc将任何音频文件转换为ogg。该程序几乎可以正常工作。但是对于大文件(我认为>~6mb),ffmpeg进程开始在pipe_wait处休眠。我不知道它在等待哪个管道... 查看详情

vscode使用remote-ssh进行python远程开发(代码片段)

...于文件的所有操作均是对远程机器的操作。就好像你是在使用远程机器做本地开发一样。Remote-WSL使用Windows的Linux子容器Remote-SS 查看详情

vscode使用remote-ssh进行python远程开发(代码片段)

...于文件的所有操作均是对远程机器的操作。就好像你是在使用远程机器做本地开发一样。Remote-WSL使用Windows的Linux子容器Remote-SS 查看详情

Python子进程将孩子的输出到文件和终端?

...1-06-2610:43:11【问题描述】:我正在运行一个脚本,该脚本使用执行许多可执行文件subprocess.call(cmdArgs,stdout=outf,stderr=errf)当outf/errf为None或文件描述符时(stdout/st 查看详情

通过 python 子进程 SSH 后终端挂起

】通过python子进程SSH后终端挂起【英文标题】:Terminalhangsaftersshingviapythonsubprocess【发布时间】:2016-12-0201:40:35【问题描述】:我已经为此工作了很长时间,如果有任何帮助,我们将不胜感激。我在这里尝试做的是ssh到测试服务... 查看详情

从Python中的imagemagick子进程读取输出[重复]

】从Python中的imagemagick子进程读取输出[重复]【英文标题】:ReadingoutputfromimagemagicksubprocessinPython[duplicate]【发布时间】:2019-02-2115:48:22【问题描述】:我想在python中获取文件的平均亮度。阅读了上一个问题[Problemgettingterminaloutputfro... 查看详情

使用文件作为子进程的标准输入和标准输出

】使用文件作为子进程的标准输入和标准输出【英文标题】:Usingfilesasstdinandstdoutforsubprocess【发布时间】:2013-02-1612:53:03【问题描述】:如何使用python子进程模块复制以下批处理命令?myprogram<myinput.in>myoutput.out换句话说,如... 查看详情

使用来自 Python 的 1 个进程使用 HDF5 和 MPI 写入/读取大文件

】使用来自Python的1个进程使用HDF5和MPI写入/读取大文件【英文标题】:Writing/readinglargefileswithHDF5andMPIusing1process,fromPython【发布时间】:2015-03-1502:35:54【问题描述】:当通过h5py和mpi4py使用并行HDF5将大型数据集写入文件时(在直接... 查看详情

如何使用带有字节而不是文件的python子进程

】如何使用带有字节而不是文件的python子进程【英文标题】:Howtousepythonsubprocesswithbytesinsteadoffiles【发布时间】:2020-08-1911:43:18【问题描述】:我可以使用ffmpeg将mp4转换为wav,这样做:ffmpeg-vntest.wav-itest.mp4我也可以使用subprocess来... 查看详情

使用 Python 检查远程 SSH 服务器上的文件是不是存在

】使用Python检查远程SSH服务器上的文件是不是存在【英文标题】:CheckingafileexistenceonaremoteSSHserverusingPython使用Python检查远程SSH服务器上的文件是否存在【发布时间】:2013-01-0118:43:31【问题描述】:我有两台服务器A和B。我想发送... 查看详情

如何从子进程 python 2.7 和 Apache 读取实时输出

】如何从子进程python2.7和Apache读取实时输出【英文标题】:Howtoreadliveoutputfromsubprocesspython2.7andApache【发布时间】:2015-07-1314:20:37【问题描述】:我有一个ApacheWeb服务器,我编写了一个python脚本来运行一个命令。我正在运行的命令... 查看详情