logo Debian Debian Debian-France Debian-Facile Debian-fr.org Forum-Debian.fr Debian ? Communautés logo inclusivité

Debian-facile

Bienvenue sur Debian-Facile, site d'aide pour les nouveaux utilisateurs de Debian.

Vous n'êtes pas identifié(e).

#1 07-06-2020 13:22:44

firstcode
Membre
Inscription : 17-01-2020

Commande SHELL Client.sh

Bonjour la Team,

J'espère que tous va bien chez vous.

J'aimerai avoir votre retour d'expérience sous LINUX DEBIAN car je suis débutant , Pourriez vous m'accorder un instant svp ?


Je dispose  d’un fichier Excel avec une liste  en ligne de chiffre qui correspond à mes clients de 1 à 7500 environs.
Le chiffre est de 000001 à 007500 dans min fichier Excel.

Dans mon terminal Debian j’arrive à exécuter une commande Shell pour le traitement de chacun de mes clients. Mais pour cela je dois alors lancer la commande manuellement et le faire un par un …. c'est très long.

TERMINAL

console#  echo"lancement de la commande  sur le client 000001"

console#  echo"lancement de la commande  sur le client 000002"

console#  echo"lancement de la commande  sur le client 000003"




J’aimerai automatiser cela pour lancer  un script client.sh  commande au fur et à mesure qui lira automatiquement les  7500 lignes du fichier fichier Excel .

Du genre dans mon fichier client.sh

#!/bin/bash
echo"lancement de la commande /mon fichier/ ligne numéro 1 toto.xls";
sleep 10 ( sleep 10 = deal 10 secondes )
echo
echo"lancement de la commande /mon fichier/ ligne numéro 1 toto.xls";
sleep 10

Merci smile

Dernière modification par firstcode (07-06-2020 14:17:56)


"Fais le ou ne le fais pas"

Hors ligne

#2 07-06-2020 15:11:17

nlancien
Membre
Distrib. : Debian Stable
Noyau : Linux 4.19.0-12-amd64
(G)UI : Openbox
Inscription : 17-07-2019

Re : Commande SHELL Client.sh

Bonjour,

Lire excel en bash ne me parait pas la chose la plus simple du monde à faire. D'abord, le transformer en CSV. Oublié Excel depuis quelques années, mais il sait faire.

Ensuite, lire ligne à ligne ton fichier CSV:


#! /usr/bin/env bash

cat MonBoCSV.csv | while read ligne
do
Traitement ligne
sleep 10
done
 



Me parait être une façon simple de procéder

Hors ligne

#3 07-06-2020 15:16:18

firstcode
Membre
Inscription : 17-01-2020

Re : Commande SHELL Client.sh

Bonjour nlancien,

Merci pour ton attention et ta réponse.

Peu tu me dire ou je peu entrer ma commande dans l'exemple de ton batch , après le "do" ?

-thx smile

"Fais le ou ne le fais pas"

Hors ligne

#4 07-06-2020 15:21:06

saitama-san
Membre
Inscription : 28-07-2019

Re : Commande SHELL Client.sh

Hors ligne

#5 07-06-2020 15:29:38

firstcode
Membre
Inscription : 17-01-2020

Re : Commande SHELL Client.sh

En effet Excel c'est peu être un peu ancien...Peu être avez vous quelque chose de plus simple à me proposer pour ce traitement , je suis partant. Peu être en nodeJs ou autre ?

"Fais le ou ne le fais pas"

Hors ligne

#6 07-06-2020 19:16:21

nlancien
Membre
Distrib. : Debian Stable
Noyau : Linux 4.19.0-12-amd64
(G)UI : Openbox
Inscription : 17-07-2019

Re : Commande SHELL Client.sh

Les commandes sont a placer entre do et done. Bash manipule pas mal le texte. Un fichier Excel n'est pas du texte. C'est pour cela que je te propose de l'exporter en CSV.
NodeJS, connais pas. Soucis réglé. Si tu nous en disais plus sur ton besoin? Sans trahir de secrets, bien entendu.
Python? Je débute, je ne te serai donc pas d'un grand secours.

Dernière modification par nlancien (07-06-2020 19:16:39)

Hors ligne

#7 07-06-2020 19:23:19

saitama-san
Membre
Inscription : 28-07-2019

Re : Commande SHELL Client.sh

il ne faut pas confondre les données du traitement
exporter les données excel en csv, ça ne devrait pas trop poser de pb
après, bash peut très bien faire le travail mais pourra être remplacer par un autre si besoin / envie

Hors ligne

#8 07-06-2020 19:52:53

firstcode
Membre
Inscription : 17-01-2020

Re : Commande SHELL Client.sh

Merci pour vos réponses.
Aucun soucis pour faire en sorte que mon fichier client passe de client.CSV en client.TXT si cela peu rendre les choses plus simple car le contenu est le même.
Je voudrais exécuter  ma commande en terminal pour lire mon fichier csv,txt etc... et que ce script lise  la ligne et traite le contenu au fur et à mesure de ma commande.
Merci la team,

Dernière modification par firstcode (07-06-2020 19:54:42)


"Fais le ou ne le fais pas"

Hors ligne

#9 08-06-2020 05:54:08

nlancien
Membre
Distrib. : Debian Stable
Noyau : Linux 4.19.0-12-amd64
(G)UI : Openbox
Inscription : 17-07-2019

Re : Commande SHELL Client.sh

Le CSV est deja du texte. Pas besoin d'aller plus loin.
Les quelques lignes que je t'ai donné lisent ligne à ligne le fichier, et exécutent, sur chaque ligne, les commandes entre do et done. J'y ai inséré le sleep 10 puisque tu l'y avais mis.
Traitement ligne est à remplacer par les commandes à lancer.

Dernière modification par nlancien (08-06-2020 05:54:34)

Hors ligne

#10 08-06-2020 06:25:05

firstcode
Membre
Inscription : 17-01-2020

Re : Commande SHELL Client.sh

Merci encore pour ta réactivité  smile
Je viens de procéder à tes instructions.

Apres avoir lancé le fichier sudo MonFichier.sh je vois bien qu'il exécute la commande avec un sleep de 10 toute les 10 secondes mais il ne lit pas le contenu de ma liste des numéro clients de mon fichier .cvs. "erreur inconnue"
sad

Dernière modification par firstcode (08-06-2020 07:24:45)


"Fais le ou ne le fais pas"

Hors ligne

#11 08-06-2020 07:42:57

MicP
Membre
Inscription : 29-02-2016

Re : Commande SHELL Client.sh

Bonjour

Si ton fichier csv à traiter se nomme MonBoCSV.csv
et que le script contenant les lignes de commandes proposées par nlancien dans son message est dans le même répertoire
et que le script est exécutable
et que le script se nomme, par exemple monScript.sh
il te suffit de passer avec la commande cd
dans le répertoire dans lequel sont le script et le fichiers,
et de lancer le script en entrant la ligne de commande :

./monsSript.sh



Plutôt que de ne nous donner que le message d'erreur retourné,
donne nous aussi :
- le nom et le chemin du script
- le nom et le chemin du fichier
- et la ligne de commande que tu as entrée.
Ça nous aidera beaucoup pour essayer de comprendre ce qu'il a pu se passer
pour pouvoir t'aider.

Dernière modification par MicP (08-06-2020 08:10:04)

Hors ligne

#12 08-06-2020 08:57:49

firstcode
Membre
Inscription : 17-01-2020

Re : Commande SHELL Client.sh

Bonjour,

Les fichiers se trouvent dans le même répertoire /home/traitement
Le script se nomme client.sh ( je lui ai attribué les droit chmod +x )
Le fichier .CVS se nomme base.cvs et dans la colonne A1 les numéro de 1 à la ligne 7500.
J'ai cette erreur quand je saisi la commande manuellement dans le terminal en entrant un mauvais numéro client.
Si je rentre le bon numéro client la commande passe.

"Fais le ou ne le fais pas"

Hors ligne

#13 08-06-2020 10:10:15

MicP
Membre
Inscription : 29-02-2016

Re : Commande SHELL Client.sh

…J'ai cette erreur quand je saisi la commande manuellement dans le terminal en entrant un mauvais numéro client.
Si je rentre le bon numéro client la commande passe. …

Pourtant, le script proposé par nlancien n'attends aucun paramètre et ne demande pas d'entrer un numéro de client
Il nous faudrait voir le contenu du script client.sh pour essayer de comprendre ce qu'il se passe.

Hors ligne

#14 08-06-2020 20:49:32

firstcode
Membre
Inscription : 17-01-2020

Re : Commande SHELL Client.sh

En effet le script  client.sh fonctionne pour exécuter la commande mais pas pour lire le fichier base.csv qui contient la liste de numéro client.
Comme je le disait si je saisi la command en terminal  qui se situe dans le même répertoire client.sh celle ci fonctionne mais alorsil faut qu'a la fin de ma commande je saisisse le numéro client.
Le script de nlancien devrait lire la pile de numéro et exécuter au fur et à mesure mais cela ne fonctionne pas neutral
Il s'agit d'une commande "echo" echo traitement ok REF01 pour client" |  REF numéro 1234567"";  qui envoi alors cette une commande sur mon serveur pour indiquer que la REF de mon  numéro  client  à pu être traité.
En tapant dans le terminal cela fonctionne en manuel un par un....
sad

Dernière modification par firstcode (09-06-2020 07:21:25)


"Fais le ou ne le fais pas"

Hors ligne

#15 09-06-2020 18:17:30

nlancien
Membre
Distrib. : Debian Stable
Noyau : Linux 4.19.0-12-amd64
(G)UI : Openbox
Inscription : 17-07-2019

Re : Commande SHELL Client.sh

Tu as ton bout de code?
Quelle commande veux tu exécuter?
As tu un exemple de ligne de ton fichier CSV? (Vires les données sensibles)

Parce que là je ne comprends pas trop.

Hors ligne

#16 10-06-2020 13:45:50

firstcode
Membre
Inscription : 17-01-2020

Re : Commande SHELL Client.sh

Bonjour nlancien

La commande est la suivante :

echo traitementDossier OK REF0200123488  >LOGREF.txt  |  SEND NUMERODESSERVEURS


Un fois la commande saisi manuellement je peu voir le contenu « REF0200123488 » dans mon fichier LOGREF.txt

Dans le fichier client.cvs il y à environ 7500 REFERENCE


cat client.csv | while read ligne
do
Echo "echo traitementDossier OK REF0200123488"  >LOGREF.txt  |  sudo SEND NUMERODESSERVEURS "";
sleep 10
done

Le script ne lit pas la liste des références du fichier dans client.sh dans ce fichier c'est une série de numéro de 1 à 10.

Pourtant en commande manuel d'un simple cat client.sh me permet de voir correctement la liste...


sad

Dernière modification par firstcode (10-06-2020 14:11:13)


"Fais le ou ne le fais pas"

Hors ligne

#17 10-06-2020 16:42:49

nlancien
Membre
Distrib. : Debian Stable
Noyau : Linux 4.19.0-12-amd64
(G)UI : Openbox
Inscription : 17-07-2019

Re : Commande SHELL Client.sh

Bonjour,

Peut être tester pas à pas.
1- Mettre le fichier client.csv dans le répertoire ou est le script client.sh
2-


#! /usr/bin/env bash

cat client.csv | while read ligne
do
echo "${ligne}"
done
 



Exécuter ce code, il doit te lire les 7500 lignes de ta liste client.csv

Echo "echo traitementDossier OK REF0200123488"  >LOGREF.txt  |  sudo SEND NUMERODESSERVEURS "";


scratchhead.gif
Je ne pige pas trop là?!

>LOGREF.TXT je redirige la sortie standard dans LOGREF.txt
Ok, jusque là je suis.
>LOGREF.txt  |  sudo SEND NUMERODESSERVEURS "";
Je redirige la sortie standard vers LOGREF.txt puis dans sudo, ben oui mais elle est partie dans LOGREF.txt. Si tu veux sauvegarder une trace de ta sortie standard dans un fichier et quand même l'envoyer dans l'entrée standard d'une autre commande, il existe l'utilitaire tee.
Quelques exemples :
https://linux.101hacks.com/unix/tee-command-examples/

Hors ligne

#18 10-06-2020 18:51:05

MicP
Membre
Inscription : 29-02-2016

Re : Commande SHELL Client.sh

Echo "echo traitementDossier OK REF0200123488"  >LOGREF.txt  |  sudo SEND NUMERODESSERVEURS "";

Et surtout, dans cette ligne de commande, il n'y a aucune référence à la variable ligne à laquelle est assignée chaque ligne lue dans le fichier client.csv

Ne sachant pas comment sont organisées les informations contenues dans le fichier client.csv
ni ce qu'il est question d'en faire, c'est pratiquement impossible de proposer une solution.

Donne nous quelques lignes du fichier pour qu'on puisse s'en faire une idée,
et dis nous ce que tu veux faire avec.

Dernière modification par MicP (10-06-2020 18:55:24)

Hors ligne

#19 10-06-2020 20:32:48

firstcode
Membre
Inscription : 17-01-2020

Re : Commande SHELL Client.sh

il semble y avoir un message d'erreur après avoir saisi ton code et exécuter en user ./client.sh


ligne 4: ${  } : mauvaise substitution

neutral

"Fais le ou ne le fais pas"

Hors ligne

Pied de page des forums