Script Shell et update BD depuis fichier txt

Fermé
pcsystemd Messages postés 700 Date d'inscription dimanche 27 novembre 2005 Statut Membre Dernière intervention 29 juillet 2024 - 9 juil. 2008 à 15:49
dubcek Messages postés 18744 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 4 septembre 2024 - 10 juil. 2008 à 12:27
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 maTable set MAJ=1 where code_utilisateur= ?

Avez vous une idée?

Voici la partie de mon script qui créait les liens physiques :

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




A voir également:

2 réponses

dubcek Messages postés 18744 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 4 septembre 2024 5 617
9 juil. 2008 à 17:01
Hello
une possiblité serait de mettre la commande dans un fichier exécuté par chaque utilisateur au login, comme par exemple /etc/profile ou /etc/login
0
pcsystemd Messages postés 700 Date d'inscription dimanche 27 novembre 2005 Statut Membre Dernière intervention 29 juillet 2024 23
9 juil. 2008 à 18:16
Merci dubcek,

peux tu être plus explicite.
0
dubcek Messages postés 18744 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 4 septembre 2024 5 617
10 juil. 2008 à 12:27
le script /etc/profile est exécuté au moment du login d'un utilisateur et peut être utilisé pour y placer des commandes exécutées avec 'lUID de l'utilisateur
0