Problème script shell et Prestashop
Résolu
Domcallaghan
Messages postés
13
Date d'inscription
Statut
Membre
Dernière intervention
-
Domcallaghan Messages postés 13 Date d'inscription Statut Membre Dernière intervention -
Domcallaghan Messages postés 13 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je souhaite automatiser la mise à jour d'une BDD prestashop avec un fichier csv. J'ai donc trouvé un script shelle remplissant cette office pour la version 1.4 de PS or je suis sur la version 1.5 et le script doit sans doute être modifié pour fonctionner correctement. Notamment la partie la plus importante est celle de la récupération du token afin de pouvoir accéder au panneau d'administration.
Le problème c'est lors de l'exécution du script qui génére effectivement un cookie avec les informations mais qui ne récupère aucun token. Je cherche ce qui as changé entre les deux versions de PS mais il semblerait que le token soit gérer autrement. Si vous pouviez m'aider à trouver un moyen de récupérer ce token, je pourrai finaliser mon dévellopement de script. Je sais qu'il y a d'autres modifications à faire mais j'aimerais les résoudre dans l'ordre à commencer par le token. D'avance merci pour vos réponses.
J'ai cherché sur ce lien là https://forums.commentcamarche.net/forum/affich-25492070-probleme-fonction-sed-bash
Mais je n'arrive pas du tout à obtenir la longue liste de token.
Je souhaite automatiser la mise à jour d'une BDD prestashop avec un fichier csv. J'ai donc trouvé un script shelle remplissant cette office pour la version 1.4 de PS or je suis sur la version 1.5 et le script doit sans doute être modifié pour fonctionner correctement. Notamment la partie la plus importante est celle de la récupération du token afin de pouvoir accéder au panneau d'administration.
#!/bin/bash ## Script de mise à jour automatique des quantités sur Prestashop ## Version 1.0.0 ## Variables utiles & Paramètres Prestashop ## email='XXX.XXX@XXXX.XXX' passwd='XXXXXX' tab='Import' admintab='Admin'$tab urladminsite='http://XXX.XXX.XXX/adminXXXXX/' csvfile='essaiproduit.csv' typevalue='&type_value[0]=id&type_value[1]=name&type_value[2]=no&type_value[3]=quantity' ## Identification, cookie & accès au BackOffice ## wget --save-cookies=cookie.txt --post-data='email='$email'&passwd='$passwd'&Submit=submit' --keep-session-cookies -q -O login.php $urladminsite'login.php' if [ -n "$(grep 'error' login.php)" ] then error=$(grep '<li>.*</li>' login.php | sed 's/.*<li>\(.*\)<\/li>/\1/g') echo 'ERREUR : '$error else # Si pas d'erreur premier accès à la partie administration wget --load-cookies=cookie.txt --keep-session-cookies -q -O index.php $urladminsite'index.php' # Accès à la partie administration token=$(grep 'index.php?tab='$admintab'\&token=' index.php | sed 's/.*token=\(.*\)\">'$tab'.*/\1/g') # Extraction du token de la page index.php pour l'onglet qui nous intéresse fi ##Importation du fichier csv présent dans /Import ## if [ -n "$(echo $token | grep ^[a-z0-9]*)" ] then echo 'TOKEN : '$token # Affichage du token récupéré wget --load-cookies=cookie.txt --keep-session-cookies --post-data='tab='$admintab'&token='$token'&skip=0&csv='$csvfile'&entity=1&iso_lang=fr&separator=;&multiple_value_separator=,'$typevalue'&import=Import CSV data' -q -O maj.php $urladminsite'index.php' else echo 'ERREUR : Pas de token' fi
Le problème c'est lors de l'exécution du script qui génére effectivement un cookie avec les informations mais qui ne récupère aucun token. Je cherche ce qui as changé entre les deux versions de PS mais il semblerait que le token soit gérer autrement. Si vous pouviez m'aider à trouver un moyen de récupérer ce token, je pourrai finaliser mon dévellopement de script. Je sais qu'il y a d'autres modifications à faire mais j'aimerais les résoudre dans l'ordre à commencer par le token. D'avance merci pour vos réponses.
J'ai cherché sur ce lien là https://forums.commentcamarche.net/forum/affich-25492070-probleme-fonction-sed-bash
Mais je n'arrive pas du tout à obtenir la longue liste de token.
A voir également:
- Problème script shell et Prestashop
- Classic shell - Télécharger - Personnalisation
- Script vidéo youtube - Guide
- Mas script - Accueil - Windows
- Ghost script - Télécharger - Polices de caractères
- Script cmd - Guide
3 réponses
Salut,
Pour pouvoir t'aider il nous faudrait un exemple de ton fichier
Pour pouvoir t'aider il nous faudrait un exemple de ton fichier
index.php, afin de savoir ce qu'est censé récupérer la commande
grepet pourquoi ça foire ;-\
En vérité, après plusieurs recherches, il semblerait que le token recherché soit dans le fichier login.php, je vais continuer de faire des test pour obtenir le token
Je vais vous montrer dans le fichier login il y a au bout d'un moment cette ligne là
On trovue donc la ligne avec le grep et puis on récupére le token avec un sed mais c'est là que je n'arrive pas à récupérer ma chaine, j'ai du mal avec l'utilisation de sed. Si quelqu'un peut m'aider à trouverla bonne syntaxe pour récupérer la chaine sachant qu'elle changera à chaque nouvelle connexion.
Je vais vous montrer dans le fichier login il y a au bout d'un moment cette ligne là
<input type="hidden" name="redirect" id="redirect" value="&token=10a09d54eb8e696ddf4a83c7543d9894"/>
On trovue donc la ligne avec le grep et puis on récupére le token avec un sed mais c'est là que je n'arrive pas à récupérer ma chaine, j'ai du mal avec l'utilisation de sed. Si quelqu'un peut m'aider à trouverla bonne syntaxe pour récupérer la chaine sachant qu'elle changera à chaque nouvelle connexion.
Je reviens à ce topic car j'ai enfin trouvé mon problème dans le script de mise à jour, la connexion au Back-Office ne marche pas. Je rappelle que j'utilise la version 1.5 de Prestashop. Normalement la première ligne doit permettre l'identification puis la seconde l'accès au backoffice or dès la première ligne WGET, la connexion ne fonctionne pas, je récupère bien un cookie mais je n'arrive pas à la page index du Back-Office, page qui me permettrait d'avancer dans mon script. Si vous avez un peu de temps pour m'aider à trouver ce qui ne va pas.
urladminsite=http://XXXX.XXXX.XXXX/adminXXX/ wget --save-cookies=cookie.txt --post-data='email='$email'&passwd='$passwd'&submitLogin=submit' --keep-session-cookies -q -O login.php $urladminsite'login.php' #accès à la partie administration wget --load-cookies=cookie.txt --keep-session-cookies -q -O index.php $urladminsite'index.php'
Difficile de se faire une idée juste avec la syntaxe ;-(
Il faudrait déterminer visuellement à l'écran que l'authentification s'est bien passée en filtrant la sortie via w3m (par exemple) et si c'est bon faire de même avec l'autre commande.
Normalement c'est ce que tu devrais pouvoir vérifier via les 2 fichiers que tu récupères (login.php et index.php), non ?
Sont-ils conformes à ce que tu peux visualiser via un navigateur lorsque tu te logues ?
Il faudrait déterminer visuellement à l'écran que l'authentification s'est bien passée en filtrant la sortie via w3m (par exemple) et si c'est bon faire de même avec l'autre commande.
Normalement c'est ce que tu devrais pouvoir vérifier via les 2 fichiers que tu récupères (login.php et index.php), non ?
Sont-ils conformes à ce que tu peux visualiser via un navigateur lorsque tu te logues ?
Je viens de finir mes essais et je pouvais voir que le log n'avais pas marché. Mais j'ai réussi à trouver le problème et je l'ai résolu, il fallait juste changer l'URL du WGET pour que cela fonctionne correctement, je viens juste de m'en apercevoir donc c'est résolu.
Pour la version 1.5, il faut utiliser cela
au lieu de cela
Pour la version 1.5, il faut utiliser cela
$urladminsite'index.php?controller=AdminLogin'
au lieu de cela
$urladminsite'index.php'