如何使用Python从REMOTE

如何使用Python从REMOTE

本文介绍了如何使用Python从REMOTE HOST目录列出文件?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我需要从远程主机目录获取文件列表,并在本地计算机上运行代码.

I need get the list of files from a remote host directory, running the code in my local machine.

类似于远程主机上的os.listdir(),而不是运行python代码的本地计算机中的os.lisdir().

Is something like os.listdir() at remote host machine, NOT is os.lisdir() in the local machine that runs the python code.

在bash中,此命令有效ssh user@host "find /remote/path/ -name "pattern*" -mmin -15" > /local/path/last_files.txt

In bash this command worksssh user@host "find /remote/path/ -name "pattern*" -mmin -15" > /local/path/last_files.txt

推荐答案

在远程计算机上运行命令的最佳选择是通过SSH与 paramiko .

Your best option for running commands on a remote machine is via ssh with paramiko.

有关如何使用该库并向远程系统发出命令的几个示例:

A couple of examples of how to use the library and issue a command to the remote system:

import base64
import paramiko

# Let's assign an RSA SSH key to the 'key' variable
key = paramiko.RSAKey(data=base64.b64decode(b'AAA...'))

# And create a client instance.
client = paramiko.SSHClient()

# Create an object to store our key
host_keys = client.get_host_keys()
# Add our key to 'host_keys'
host_keys.add('ssh.example.com', 'ssh-rsa', key)

# Connect to our client; you will need
# to know/use for the remote account:
#
#   IP/Hostname of target
#   A username
#   A password
client.connect('IP_HOSTNAME', username='THE_USER', password='THE_PASSWORD')

# Assign our input, output and error variables to
# to a command we will be issuing to the remote
# system
stdin, stdout, stderr = client.exec_command(
    'find /path/data/ -name "pattern*" -mmin -15'
)

# We iterate over stdout
for line in stdout:
    print('... ' + line.strip('\n'))

# And finally we close the connection to our client
client.close()

正如OP所指出的,如果我们已经在本地拥有一个已知的主机文件,我们可以做些稍有不同的事情:

As pointed out by the OP, if we already have a known hosts file locally we can do things slightly different:

import base64
import paramiko

# And create a client instance.
client = paramiko.SSHClient()

# Create a 'host_keys' object and load
# our local known hosts
host_keys = client.load_system_host_keys()

# Connect to our client; you will need
# to know/use for the remote account:
#
#   IP/Hostname of target
#   A username
#   A password
client.connect('IP_HOSTNAME', username='THE_USER', password='THE_PASSWORD')

# Assign our input, output and error variables to
# to a command we will be issuing to the remote
# system
stdin, stdout, stderr = client.exec_command(
    'find /path/data/ -name "pattern*" -mmin -15'
)

# We iterate over stdout
for line in stdout:
    print('... ' + line.strip('\n'))

# And finally we close the connection to our client
client.close()

这篇关于如何使用Python从REMOTE HOST目录列出文件?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

09-02 14:13