2014-09-11 8 views
5

Używam python z ftplib do przesyłania zdjęć do folderu na moim raspberryPi znajduje się w/var/www. Wszystko działa dobrze, z wyjątkiem tego, że przesłane pliki mają uprawnienia 600 i potrzebuję dla nich 644.Zmiana uprawnień za pośrednictwem ftp w python

Jaki jest najlepszy sposób na zrobienie tego? szukam czegoś podobnego:

def ftp_store_avatar(name, image): 
    ftp = ftp_connect() 
    ftp.cwd("/img") 
    file = open(image, 'rb') 
    ftp.storbinary('STOR ' + name + ".jpg", file)  # send the file 

    [command to set permissions to file] 

    file.close() 
    ftp.close() 
+1

Jeśli znalazłeś poprawną odpowiedź poniżej, pamiętaj, aby oznaczyć ją jako poprawną. –

Odpowiedz

5

Musisz użyć sendcmd.

Oto przykładowy program, który zmienia uprawnienia poprzez ftplib:

#!/usr/bin/env python 

import sys 
import ftplib 

filename = sys.argv[1] 
ftp = ftplib.FTP('servername', 'username', 'password') 
print ftp.sendcmd('SITE CHMOD 644 ' + filename) 
ftp.quit() 

okazji programowania!

2

użyłbym SFTPClient w paramiko w tym przypadku: http://paramiko-docs.readthedocs.org/en/latest/api/sftp.html

można podłączyć, otworzyć plik i zmienić uprawnienia tak:

import paramiko, stat 

client = paramiko.SSHClient() 
client.set_missing_host_key_policy(paramiko.AutoAddPolicy()) 
client.connect(your_hostname, 
       username=user, 
       password=passwd) 

sftp = client.open_sftp() 
remote = sftp.file(remote_filename, 'w') 
#remote.writes here 
# Here, user has all permissions, group has read and execute, other has read 
remote.chmod(stat.S_IRWXU | stats.S_IRGRP | stats.S_IXGRP 
      | stats.IROTH) 

Sposób chmod ma takie same semantykę jak os.chmod