Mettre en ligne un fichier via SFTP
Un serveur SFTP tourne sur pica02
et vise principalement à faciliter l’upload des artifacts et autres fichiers générés (par exemple par le Graph Bot).
L’ensemble des fichiers téléversés sont ensuite accessibles via un serveur web public, consultable à l’adresse https://uploads.picasoft.net ; il faut connaître l’URL exacte pour accéder aux fichiers, l’autoindex
n’étant pas activé.
On accède au SFTP avec les paramètres suivants :
- URL :
sftp://uploads.picasoft.net
- Port : 2222
- Identifiants : voir le dépôt des identifiants :
Asso/SFTP/picasoft.net
.
En ligne de commande: sftp -P 2222 pica@uploads.picasoft.net
Le chemin autorisé en écriture est ~/uploads
. Vous pouvez créer n’importe quel sous-dossier et téléverser vos fichiers.
Une fois le fichier uploadé, il est accessible sur le serveur web d’upload en supprimant le préfixe uploads
du chemin.
Exemple :
- Vous uploadez un fichier
a.txt
dans~/uploads/test
via SFTP, - Le fichier est accessible à
uploads.picasoft.net/test/a.txt
.
Voici un snippet Python permettant d’automatiser l’upload :
- snippet.python
import paramiko # On suppose les variables hostname, port, login, password, base_path, et files connues transport = paramiko.Transport((hostname, port)) transport.connect(None, login, password) try: client = paramiko.SFTPClient.from_transport(transport) except Exception as e: print("Error creating SFTP client : {}".format(e)) try: client.listdir(base_path) print("Folder already existing, skipping creation...") except FileNotFoundError: client.mkdir(base_path) for f in files: filename = os.path.basename(f) try: client.put(f, '{}/{}'.format(base_path, filename)) print("File {} successfully uploaded!".format(filename)) except Exception as e: print('Error uploading file {0} : {1}'.format(f, e))