python - 如何使用python自动通过网络发送文件?

标签 python shell terminal centos

这是我需要做的:
我需要通过网络复制文件。要复制的文件在一台机器上,我需要将它发送到远程机器上。它应该是自动化的,并且应该使用 python 制作。我对python的os.popen和subprocess.Popen相当熟悉。我可以用它来复制文件,但是,问题是一旦我运行了单行命令(如下所示)

scp xxx@localhost:file1.txt yyy@]192.168.104.XXX:file2.txt


它肯定会要求类似的东西

Are you sure you want to connect (yes/no)?

Password :


如果我没记错的话,一旦我发送了这个命令(假设我在 python 中编码)

conn.modules.os.popen("scp xxx@localhost:file1.txt yyy@]192.168.104.XXX:file2.txt")


然后是这个命令

conn.modules.os.popen("yes")


如果我在终端中手动输入,输出(我很确定它会给我错误)与输出相比会有所不同。
你知道如何在 python 中编写代码吗?或者你能告诉我一些可以解决我问题的东西(命令等)吗
注意:我正在使用 RPyC 连接到其他远程机器并且所有机器都在 CentOS 上运行

最佳答案

通过 Python 执行此操作的正确方法是使用 fabric如上面的评论所述。

创建一个名为 fabfile.py 的文件

#!/usr/bin/python

from fabric.api import run, env, sudo, put

env.user = 'user'
env.hosts = ['xxxxx.org',]

def copy():
    put('wong_8066.zip', '/home1/user/wong_8066.zip')

然后在本地机器上运行 fab copy它会提示输入密码。
yeukhon@yeukhon-P5E-VM-DO:~$ fab copy
[xxxxxx.org] Executing task 'copy'
[xxxxxx.org] Login password: 
[xxxxxx.org] put: wong_8066.zip -> /home1/user/wong_8066.zip

Done.

你可以用织物做更多的事情。 Fabric 用于部署。
您可以使用fabric 在本地运行东西,或远程运行多个主机。您可以在运行时传递许多选项。

如果您想在没有 password prompt 的情况下自动执行此操作,您可以按照文档中的说明指定 ssh-key 的路径。

fab uses Python’s optparse library, meaning that it honors typical Linux or GNU style short and long options, as well as freely mixing options and arguments. E.g. fab task1 -H hostname task2 -i path/to/keyfile is just as valid as the more straightforward fab -H hostname -i path/to/keyfile task1 task2.

关于python - 如何使用python自动通过网络发送文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12613552/

相关文章:

r - 无法安装cubature软件包(配置: error: C compiler cannot create executables)

python - 在 Django 中调用添加集中的字段

python - 多核 Python : multiprocessing Vs. zeroMQ?

bash - 如何将命令列表(带管道)的标准输入连接到其中一个命令

linux - bash 中的 "sed"命令

linux - $argv[1] 和 $1 的概念

python - 如何避免 PyGame 中圆形和矩形之间的小故障碰撞?

python - Angular post返回403而get在Django中使用Django Rest Framework返回301

node.js - 我正在尝试在 Ubuntu 16.04 中安装 nginx,但出现有关语言环境设置的错误

java - TelnetClient 输出 - ANSI 禁用