IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Shell et commandes GNU Discussion :

Script Shell et update BD depuis fichier txt


Sujet :

Shell et commandes GNU

  1. #1
    Membre du Club
    Inscrit en
    Février 2005
    Messages
    144
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 144
    Points : 62
    Points
    62
    Par défaut Script Shell et update BD depuis fichier txt
    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

  2. #2
    Rédacteur/Modérateur
    Avatar de Winnt
    Homme Profil pro
    budget et contrôle de gestion
    Inscrit en
    Décembre 2006
    Messages
    1 978
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France

    Informations professionnelles :
    Activité : budget et contrôle de gestion
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 978
    Points : 4 130
    Points
    4 130
    Par défaut
    Bonsoir,

    En supposant que tu utilise Mysql.

    Je ferais comme cela :
    1. Lire le fichier ligne à ligne (en virant la première)
    2. Pour chaque ligne créer ma requête (update....) dans un fichier toto.sql
    3. l'exécuter par une commande "mysql < toto.sql"
    Winnt
    Merci de lire les règles du forum LaTeX et Qu'est ce qu'un ECM ?.
    N'hésitez pas à parcourir la FAQ la réponse y est peut-être déjà.
    Pensez au bouton si votre problème est résolu.


    C'est en Linuxant qu'on devient .... geek
    Et c'est en LateXant qu'on devient flemmard
    Mon blog tout neuf.
    Articles : présentation de la distribution Gentoo, Les index sous LaTeX et leur personnalisation.

Discussions similaires

  1. Réponses: 2
    Dernier message: 21/05/2010, 11h54
  2. connecter une base de données depuis fichier txt
    Par phoenix345 dans le forum Windows Forms
    Réponses: 29
    Dernier message: 20/05/2010, 12h12
  3. Import de rendez-vous depuis fichier txt
    Par Joachim49 dans le forum VBA Outlook
    Réponses: 4
    Dernier message: 17/03/2009, 11h43
  4. Création d'un tableau depuis fichier txt
    Par Joachim49 dans le forum VBA Outlook
    Réponses: 4
    Dernier message: 16/03/2009, 09h37
  5. Réponses: 3
    Dernier message: 28/05/2008, 16h30

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo