Scripts / Importation de données anciennes
« Scripts » est la solution complète de SKOOR pour créer, modifier et exécuter des scripts, avec une multitude d'options permettant de les personnaliser.
Page « Scripts »
La page est divisée en trois sections principales :
Paramètres
Cette section comprend les paramètres généraux d'un script, tels que :
Paramètre | Description |
|---|---|
Nom | Définit le nom du script SKOOR. |
Description | Définissez la description du script SKOOR. |
Délai d'expiration | Définit le délai d'expiration par défaut pour l'exécution du script, en secondes. |
Types MIME acceptés | Spécifie les types MIME autorisés pour les fichiers source téléchargés. |
Configuration d'exécution par défaut | Sélectionne la configuration d'exécution par défaut utilisée par le script. |
Copier et réinitialiser le jeton | Permet aux administrateurs de copier et de réinitialiser le jeton du webhook. Disponible uniquement pour les ADMINS. |
Configurations de planification | Permet de définir plusieurs plannings avec des configurations d'exécution dédiées. Commencez par choisir une période (Année, Mois, Semaine, Jour, Heure ou Minute) : en fonction de votre sélection, seuls les champs pertinents s'affichent (Mois, Jours du mois, Jours de la semaine, Heures, Minutes). La sélection multiple est possible. Pour exécuter le processus à intervalles réguliers, définissez la période et double-cliquez sur le nombre souhaité. Exemple : tous les jours à 02h30 → Période « Jour », Heure 2, Minute 30. Exemple : toutes les 10 minutes → Période « Heure », Minute <double-cliquez sur 10> |
Configurations d’exécution | Permet de personnaliser le délai d’expiration et les variables d’environnement. |
Fichiers
Cette section offre une solution complète de gestion des fichiers pour le script, y compris un éditeur de pointe pour les données textuelles.
Un lien de téléchargement s'affichera si les données sont binaires (non modifiables sous forme de texte).
Exécution
Cette section est chargée de l'exécution et de la surveillance des exécutions d'un script. Elle propose une petite zone de dépôt pour télécharger des fichiers source si nécessaire.
Prise en charge de la barre de progression
Les scripts peuvent afficher une barre de progression à la fois dans la boîte de dialogue des détails de la tâche et dans le widget de script. Pour mettre à jour la progression, le script doit émettre des messages d'état indiquant l'étape en cours et le nombre total d'étapes prévues. Les mises à jour d'état utilisent le format suivant :
#PROGRESS: {step}/{maxSteps}
Les lignes correspondant à ce format sont automatiquement analysées pour mettre à jour la barre de progression et sont supprimées de la sortie de journal standard du script.
L'exemple suivant montre comment générer des mises à jour de progression :
import os
import time
max_count = int(os.environ.get('max_count', 10))
for i in range(1, max_count + 1):
time.sleep(1)
print(f"#PROGRESS: {i}/{max_count}")
print(f"Reached {(i / max_count) * 100:.1f}%")
Création d’un script
Les scripts peuvent être créés manuellement ou importés via des fichiers ZIP, comme illustré ci-dessous :
Importation d’un script à l’aide d’un fichier ZIP
Lors de l’importation d’un fichier ZIP, une analyse est effectuée, à l’issue de laquelle différents indicateurs s’affichent avant que l’importation proprement dite ne soit effectuée.
L'analyse indique si les scripts importés existent déjà sur le système (même nom) ou si l'importation contient des métadonnées.
Elle indique également si les scripts (en cas de remplacement) seront déplacés vers un autre groupe.
Ces indicateurs sont les suivants :
Paramètre | Description |
|---|---|
Confirmer le remplacement | Indique qu'un script portant le même nom existe déjà. |
Inclure les métadonnées du script | Indique que le fichier ZIP contient un fichier « Ce fichier contient le délai d'expiration par défaut, la description et la configuration d'exécution/de planification du script. |
Éléments fondamentaux d’un script
Script d'exécution
Le fichier principal contient la logique du script. Il détermine le type de moteur d’exécution du script :
Le moteur Python Runner attend un fichier «
main.py».Le moteur Talend Runner attend un fichier
<scriptName>_run.sh.Le Shell Runner attend un fichier «
run.sh».
Placez votre script principal à un niveau en dessous de la racine (ou plus haut), car l'analyse en largeur utilise toujours le script le plus superficiel qu'elle trouve.
Le message suivant s'affiche lorsque vous essayez d'exécuter un script sans script d'exécution principal.
.env
Il s’agit d’un simple fichier texte contenant des variables d’environnement. Cela permet d’ajuster les variables utilisées dans un script en fonction du cas d’utilisation.
Le fichier .env doit se trouver dans le même dossier que le script d'exécution (main.py, run.sh, etc.)
Le fichier .env suivant générerait les variables d’environnement indiquées, permettant de les ajuster dans des configurations d’exécution personnalisées.
Variables d’environnement prédéfinies
Certaines informations relatives à l'exécution du script sont transmises à l'environnement du script sous forme de variables d'environnement. Il s'agit des suivantes :
L'identifiant utilisateur (UserId) sous la forme
SKOOR_USER_IDNom d’utilisateur :
SKOOR_USER_USERNAMENom complet de l’utilisateur sous la forme
SKOOR_USER_FULLNAME
Les captures d'écran ci-dessous montrent comment récupérer ces informations dans un exemple Python, ainsi que la sortie du script :
import os
source_file = os.environ.get('SKOOR_SOURCE_FILE')
user_id = os.environ.get('SKOOR_USER_ID')
username = os.environ.get('SKOOR_USER_USERNAME')
userFullname = os.environ.get('SKOOR_USER_FULLNAME')
userGroup_id = os.environ.get('SKOOR_USER_USERGROUP_IDS')
userGroup_names = os.environ.get('SKOOR_USER_USERGROUP_NAMES')
print("sourceFile: ", source_file)
print("User ID: ", user_id)
print("Username: ", username)
print("Fullname: ", userFullname)
print("UserGroup ID: ", userGroup_id)
print("UserGroup name: ", userGroup_names)
Exemple utilisant le fichier .env
Le script suivant lit la variable foo dans le fichier .env et l'affiche dans la console. Vous trouverez ci-dessous les captures d'écran de ce fichier .env et des configurations d'exécution correspondantes.
Fichiers source
Les scripts peuvent être conçus pour accepter des fichiers externes (fichiers source) et les traiter dans le cadre de la logique du script.
Les fichiers source peuvent être référencés dans le script à l’aide de la variable d’environnement SKOOR_SOURCE_FILE, comme le montre l’extrait de code suivant :
# IN PYTHON
import os
source_file = os.environ.get('SKOOR_SOURCE_FILE')
print(source_file)
#IN SHELL echo $SKOOR_SOURCE_FILE
Les types de fichiers suivants sont pris en charge par défaut, sauf restriction dans la configuration du script :
Texte (structuré)
text/plaintext/csvtext/tab-separated-valuestext/tsvtext/markdowntext/vttapplication/jsonapplication/x-ndjsonapplication/jsonlapplication/xmltext/xmlapplication/yamltext/yamlapplication/x-yamlapplication/sqltext/sql
Documents
application/pdfapplication/mswordapplication/vnd.openxmlformats-officedocument.wordprocessingml.documentapplication/vnd.ms-excelapplication/vnd.openxmlformats-officedocument.spreadsheetml.sheetapplication/vnd.ms-powerpointapplication/vnd.openxmlformats-officedocument.presentationml.presentationapplication/vnd.oasis.opendocument.textapplication/vnd.oasis.opendocument.spreadsheetapplication/vnd.oasis.opendocument.presentationapplication/rtfapplication/epub+zip
Archives
application/parquetapplication/x-parquetapplication/avroapplication/x-avroapplication/vnd.apache.arrow.fileapplication/vnd.apache.arrow.streamapplication/orcapplication/x-orcapplication/zipapplication/x-zip-compressedapplication/gzipapplication/x-gzipapplication/x-bzip2application/x-xzapplication/zstdapplication/x-zstdapplication/x-tarapplication/x-7z-compressed
Exécution de sous-scripts
Si des sous-scripts sont nécessaires, ils doivent être placés dans un dossier « bin ». En effet, ceux-ci seront exécutables.
Veillez à toujours placer les sous-scripts dans un dossier « bin ».
Voici un exemple sous Shell :
La sortie de ce script « run.sh » est la suivante :
La sortie de ce fichier « run.sh » est la suivante :
QuickRun
Cette option propose un bouton « QuickRun » qui exécute le script sans fichier source et avec les valeurs par défaut des variables d’environnement.
Elle permet d’exécuter rapidement un script lors de son développement ou de son dépannage, et le bouton « Latest Job Overview » affiche la sortie de la console.
Exécution
Lancer une exécution
Dans la section « Exécution », sélectionnez la configuration souhaitée (et téléchargez un fichier source si nécessaire), puis cliquez sur « Exécuter le script »
Annuler une exécution
Les exécutions en cours ainsi que celles en attente peuvent être annulées en cliquant sur l’icône d’annulation de tâche dans la section « Historique ».
Désactivation de Poetry
Poetry est un outil puissant utilisé pour la gestion des dépendances et des environnements virtuels en Python. Tout cela s'effectue en définissant un fichier pyproject.toml dans le même dossier que le script d'exécution (main.py, run.sh, etc.).
La suppression ou le renommage du fichier `pyproject.toml` désactivera automatiquement l’utilisation de Poetry et fera appel à `skoor-python` à la place.
Aperçu des tâches
Pour afficher tous les détails d’une tâche, cliquez sur une entrée de la liste « Historique » comme indiqué ci-dessous :
Historique des exécutions
La section « Historique » affiche la liste de toutes les exécutions du script. Vous pouvez consulter les détails de chaque exécution en cliquant dessus.
Utilisation des jetons Webhook pour exécuter un convertisseur
Cette option permet d'exécuter le script sans avoir à se connecter ; elle est privilégiée par les utilisateurs techniques.
Chaque script dispose d'un jeton Webhook unique ; l'URL est copiée dans le presse-papiers en cliquant sur « Copy Webhook Token » (Copier le jeton Webhook).
Exemple d’utilisation des jetons Webhook
Copiez le jeton Webhook depuis la page du script en cliquant sur « Copy Webhook Token » ; dans cet exemple, l'URL du Webhook se présente comme suit :
http://localhost:8090/scripts/8925cfd4-2063-4b07-9d56-956f2b754b47/run?token=6ae51c9f-d292-4d55-b512-4537121b37f5
Utilisez cette URL pour envoyer une requête POST :
À l’aide d’un logiciel d’API tel que POSTMAN
Une réponse 200, accompagnée de l’entité de tâche initiale, indique que l’exécution a été déclenchée, comme le montre la capture d’écran ci-dessous :
Utilisation de cURLdans le terminal
curl -X POST http://localhost:8090/scripts/8925cfd4-2063-4b07-9d56-956f2b754b47/run?token=6ae51c9f-d292-4d55-b512-4537121b37f5
La réponse ressemblerait à ceci
Cette exécution peut être consultée dans le SKOOR Dashboard et apparaît dans l'historique comme ayant été créée par l'utilisateur « Token-User ».
Suppression
Cliquez sur le bouton du menu contextuel et sélectionnez l’icône de la corbeille pour supprimer le script. Le bouton du menu contextuel apparaît lorsque vous survolez le nom du script avec le pointeur de la souris.
Exporter un ou plusieurs scripts au format ZIP
Cliquez sur le bouton du menu contextuel et sélectionnez le bouton d’exportation pour exporter un seul script. L’icône apparaît lorsque vous survolez le nom du script avec le pointeur de la souris.
Vous pouvez également exporter tout un groupe, voire tous les scripts disponibles sur le système.
Le fichier ZIP exporté contient un fichier « script_metadata.json » qui regroupe la description, le délai d’expiration par défaut, la configuration d’exécution et la configuration de la planification du script.
Sur Safari : désactivez Paramètres → Général → « Ouvrir les fichiers “sûrs” après le téléchargement » pour empêcher l’extraction automatique des fichiers ZIP.

































