python - Paramiko/scp - 检查远程主机上是否存在文件

标签 python python-2.7 ssh scp paramiko

我正在使用 Python Paramiko 和 scp 在远程机器上执行一些操作。我工作的一些机器要求文件在他们的系统上本地可用。在这种情况下,我使用 Paramiko 和 scp 来复制文件。例如:

from paramiko import SSHClient
from scp import SCPClient

ssh = SSHClient()
ssh.load_system_host_keys()
ssh.connect('192.168.100.1')

scp = SCPClient(ssh.get_transport())
scp.put('localfile', 'remote file')
scp.close()

ssh.close()

我的问题是,在尝试 scp 之前如何检查远程计算机上是否存在“localfile”?

我想尽可能地尝试使用 Python 命令,即不是 bash

最佳答案

请改用 paramiko 的 SFTP 客户端。此示例程序在复制前检查是否存在。

#!/usr/bin/env python

import paramiko
import getpass

# make a local test file
open('deleteme.txt', 'w').write('you really should delete this]n')

ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
try:
    ssh.connect('localhost', username=getpass.getuser(),
        password=getpass.getpass('password: '))
    sftp = ssh.open_sftp()
    sftp.chdir("/tmp/")
    try:
        print(sftp.stat('/tmp/deleteme.txt'))
        print('file exists')
    except IOError:
        print('copying file')
        sftp.put('deleteme.txt', '/tmp/deleteme.txt')
    ssh.close()
except paramiko.SSHException:
    print("Connection Error")

关于python - Paramiko/scp - 检查远程主机上是否存在文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36488659/

相关文章:

php - ssh 从 php 访问 ec2

python - 导入 Eve,但运行 run.py 时,显示没有名为 eve 的模块

python - PySide 中的 QStandardItemEditorCreator

google-app-engine - GAE 搜索 API 排序

python - 查找后不读取所有字符

ubuntu - 在 Ubuntu 上的/var 目录中使用 ssh key

python: pandas: 过滤一列并获取另一列的平均值

python - 自定义 Seaborn Barplot 中使用的 'Hue' 颜色

python - python private-attribute_class 中的错误

bash - 使用脚本远程执行鞭尾脚本