2014-09-11 12 views
5

Sto usando python con ftplib per caricare immagini in una cartella sul mio raspberryPi che si trova in/var/www. Tutto funziona bene, tranne che i file caricati hanno le autorizzazioni 600 e ho bisogno di 644 per loro.Modifica autorizzazioni via ftp in python

Qual è il modo migliore per farlo? Sto cercando qualcosa di simile:

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

Se hai trovato una risposta corretta di seguito, assicurati di contrassegnarla come corretta. –

risposta

5

Devi usare sendcmd.

Ecco un esempio di programma che cambia i permessi via 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() 

programmazione Felice!

2

Vorrei utilizzare lo SFTPClient in paramiko per questo caso: http://paramiko-docs.readthedocs.org/en/latest/api/sftp.html

È possibile collegare, aprire il file, e modificare le autorizzazioni in questo modo:

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) 

procedimento chmod ha la stessa semantica os.chmod