【问题标题】:How to open file from server with python?如何使用python从服务器打开文件?
【发布时间】:2020-11-01 03:42:57
【问题描述】:

我需要使用 python 访问和打开服务器上的文件。我有一个 Centos 服务器,我可以使用 ssh root@172.24.2.233终端 访问它并输入用户密码。

问题
如果我在此路径中的服务器上有一个文件:/var/document.txt 我要写什么来访问该路径并在我的本地计算机上打开 document.txt

如果文件在我的本地机器上,我可以这样读取它:

import glob

# for example if i want to see file in the folder
for f in glob.glob('/var/*.*'):
    print(f) # output --> document.txt
    # read file
    read = open(f, 'r')

如果文件在服务器上,我如何访问它? 我不想下载文件,编辑它然后重新上传。

【问题讨论】:

  • 远程服务器上是否安装了python?
  • 如果你想在本地机器上处理文件,你必须下载文件并处理它
  • @bigbounty nope,在我的本地机器上,但我想读取服务器上的文件。
  • 尝试查看 sshfs,将远程文件系统挂载到本地机器上,或者第二个选项,将文件从服务器下载到本地机器,然后在此处运行脚本,或者第三个选项,将脚本上传到服务器并在那里运行脚本。
  • 可能会有帮助:pypi.org/project/scp

标签: python ssh-tunnel


【解决方案1】:
from contextlib     import closing
from fabric.network import connect
user = 'root' # your SSH user
password = 'secret' # your SSH password
host = '172.24.2.233' #IP of your server
port = '22' #SSH Port
remote_file = '/var/document.txt'
with closing(connect(user, password, host, port)) as ssh, \
     closing(ssh.open_sftp()) as sftp, \
     closing(sftp.open(remote_file)) as file:
    for line in file:
        print(line)

【讨论】:

  • 感谢您的回复,我想这就是我要找的东西,但现在我有一些像这样的错误ModuleNotFoundError: No module named 'fabric.network' 尽管已经使用此命令安装了结构 pip install fabric 现在我的结构版本是fabric 2.5.0,有什么问题?
  • 您使用的是虚拟环境(venv)吗?也许您没有将它安装在 venv 中,而是安装在系统范围的安装中。你用的是什么python版本?
  • Python 3.8.2,是的,我没有在 venv 中安装它。
  • 但是您使用的是 venv?如果是这样,请使用 venv 并将其安装在那里。那么它应该可以工作了。
  • @Kaow,你为什么不直接使用 scp ?来自本地机器而不是 ssh 的含义,执行 scp root@172.24.2.233:/var/document.txt . 并且您将在启动 scp 命令的目录中直接在您的机器上拥有该文件(scp 使用 SSH 协议通过扩展 cp 的语法来跨系统复制文件.)
猜你喜欢
  • 2013-11-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-24
  • 1970-01-01
  • 2014-01-03
  • 2014-01-07
相关资源
最近更新 更多