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))
  • technique/tips/sftp.txt
  • de qduchemi