Bonjour,
voila j'ai un crée un script shell qui créait les liens physiques de fichiers pour une mise a jour auto dans les dossiers FTP des utilisateurs.
Le processus est le suivant :
quand on souhaite mettre a jour le soft du client on renseigne un fichier txt avec la version et le code utilisateur puis on envoi ce fichier txt dans un compte ftp . Mon script va lire se fichier tout les 5 minutes puis il créait les liens physiques dans la boite correspondante au code du client.
Puis lorsque le client lance son logiciel ,celui ci se connecte a notre base de données et s'il voit le champs MAJ a 1 il lance la mise a jour.
Le souci c'est que pour le moment il est nécessaire de mettre ce champ MAJ a 1 manuellement donc je dois effectué une mise a jours pour 50 utilisateurs différents je dois saisir le champ MAJ a 1 50 fois.
Je voudrais que cela ce fasse en automatique. lorsque les liens sont fait que le script mette a jour le champ MAJ a 1 dans la BD.
Pour cela il faut qu'il parcours le fichier txt puis lorsqu'il recontre un code utilisateur qu'il fasse un UPDATE .
Le contenu du fichier txt est :
VER_TO_658
845
265
32
45
Je dois donc avec un sed retirer la premiere ligne qui corrspond a la version puis utiliser le fichier pour qu'un UPDATE du champ MAJ soit fait pour les codes utilisateurs :
845
265
32
45
update maTable set MAJ=1 where code_utilisateur= mon fichier txt
Avez vous une idée?
Voici la partie de mon script qui créait les liens physiques :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86 while true do case $1 in -v) VERSION=$2 shift 2 ;; -l) LIST=$2 shift 2 ;; -u) USER=$2 shift 2 ;; -h) usage exit 0 ;; *) break ;; esac done #variable prédefini DATE="`date '+%Y-%m-%d'`" TMPDIR="/tmp/maj${USER}" if [ ! -d "${TMPDIR}" ] then mkdir -p ${TMPDIR} fi HOMEMAJ="${USER}" REPLIST="liste" LISTEFICH="liste_maj_${DATE}.lst" LOGFILE="${TMPDIR}/majlog_${DATE}.log" MESMAJ="MaJ${USER}" if [ "${USER}" == "toto" ] then REPMAJ="majtoto" elif [ "${USER}" == "tata" ] then REPMAJ="majtata" elif [ "${USER}" == "titi" ] then REPMAJ="majtiti" fi if [ ! -d "${HOMEMAJ}/${REPMAJ}/${VERSION}" ] then echo "le repertoire ${VERSION} n'existe pas" | mail -s "error ( rdft.sh ) de mise à jour ${MESMAJ} \" ${DATE}\" " tutu@exemple.fr exit 1 fi if [ ! -s "${HOMEMAJ}/${REPMAJ}/${REPLIST}/${LIST}" ] then echo "le fichier ${LIST} n'existe pas" | mail -s "error ( rdft.sh ) de mise à jour ${MESMAJ} \" ${DATE}\" "tutu@exemple.fr exit 1 fi if [ -s "${HOMEMAJ}/${REPMAJ}/${LISTEFICH}" ] then rm -f ${HOMEMAJ}/${REPMAJ}/${LISTEFICH} fi ls ${HOMEMAJ}/${REPMAJ}/${VERSION}/*.* | awk -F ''${HOMEMAJ}'/'${REPMAJ}'/'${VERSION}'/' '{print $2}' >> ${HOMEMAJ}/${REPMAJ}/${LISTEFICH} if [ -s "${HOMEMAJ}/${REPMAJ}/${LISTEFICH}" ] then if [ -s ${LOGFILE} ] then echo "##################" >> ${LOGFILE} fi for numag in `cat ${HOMEMAJ}/${REPMAJ}/${REPLIST}/${LIST}` do cd ${HOMEMAJ}/$numag;rm -f *.*;cat ${HOMEMAJ}/${REPMAJ}/${LISTEFICH} | xargs -i sh -c 'ln '${HOMEMAJ}'/'${REPMAJ}'/'${VERSION}'/{} {}' ls ${HOMEMAJ}/$numag/*.* >> ${LOGFILE} done exit 0 else echo "le fichier ${LISTEFICH} n'existe pas" | mail -s " error ( rdft.sh ) de mise à jour ${MESMAJ} \"${DATE}\" " tutu@exemple.fr exit 1 fi
Partager