2016-04-07 14 views
4

Uzak makinelerde bazı işlemleri gerçekleştirmek için Python Paramiko ve scp kullanıyorum. Çalıştığım bazı makineler, dosyaların sistemlerinde yerel olarak bulunmasını gerektirir. Bu durumda, dosyaları kopyalamak için Paramiko ve scp kullanıyorum. Örneğin:Paramiko/scp - dosyanın uzak ana bilgisayarda var olup olmadığını kontrol edin

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() 

Sorum, nasıl ben scp çalışmadan önce 'LocalFile' uzak makinede olup olmadığını görmek için kontrol edebilirsiniz edilir? yani yerine

cevap

8

Kullanım paramiko SFTP istemcisi bash değil mümkünse denemek ve Python kullanmak istiyorum

emreder. Bu örnek program, kopyadan önce varlığını kontrol eder.

#!/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") 
+0

Öneriniz için teşekkürler. Sftp uzak makinede, yani FTP'de çalıştırmak için herhangi bir şeye ihtiyaç duyar mı? – Mark

+0

Hayır, sunucuların bir parçası olmalıdır ssh daemon. SFTP'm fazladan yapılandırma yapmadan çalıştı. – tdelaney

İlgili konular