#1 Le 23/01/2008, à 14:25
- misterbgs
[RESOLU]script sh pour connexion bureau a distance
Bonjour,
j'essaie d'implémenter un journal de log pour mes connexions a distances que j'effectue avec rdesktop.
mais j'ai un souci avec la création de fichiers temporaires :
Je mets toute les infos dans un fichier temporaire et a la fin de la connexion je copie le fichier temporaire dans le log. Ceci me permet d'avoir toutes mes connexions dans le même fichier.
Or si lance deux fois le programme tout est chevauché. J'essaie donc de créer un fichier temporaire par connexion mais c'est là que je peine.
N'étant pas très doué en script je sollicite votre aide.
Le probleme etant qu'il y a une erreur a la creation et a la verification du fichier temporaire dans la boucle while...
Voici le code :
#!/bin/bash
nb=0
rep_tmp="~/bin/tmp"
if [ $# -ne 2 ]
then
echo
echo "Erreur $0 a besoin de deux arguments en paramètres !"
echo "Le premier est l'adresse IP du tse, le second est le nom d'host"
echo ""
exit -1
else
while test -f "$rep_tmp/tmp$nb.tmp" # début de la boucle de test d'existence du fichier
do # s'il n'existe alors on cree tmp1, tmp2, etc...
nb=$nb+1
done
fichier="$rep_tmp/tmp$nb.tmp"
echo $fichier
touch $fichier
echo "Connexion en cours ..."
echo "Connexion au serveur $1 le $(date)">>$fichier
sleep 3
echo "">>$fichier
rdesktop -C -n $2 -5 -k fr -f $1 2>>$fichier
echo "">>$fichier
echo "Connexion terminee le $(date) ">>$fichier
echo "Fin de la connexion a distance avec le tse $1\n"
echo "______________________________________________________________________________________">>$fichier
echo "">>$fichier
cat $fichier >>~/bin/log/tse.log
rm -f $fichier
fi
echo ""
echo "Les erreurs eventuelles se trouvent dans le fichier ~/bin/log/tse.log"
echo ""
exit 0
voici le message d'erreur
~/bin/tmp/tmp0.tmp
touch: ne peut faire un touch sur `~/bin/tmp/tmp0.tmp': Aucun fichier ou répertoire de ce type
Connexion en cours ...
/home/xcarbel/bin/tse.sh: line 23: ~/bin/tmp/tmp0.tmp: Aucun fichier ou répertoire de ce type
/home/xcarbel/bin/tse.sh: line 25: ~/bin/tmp/tmp0.tmp: Aucun fichier ou répertoire de ce type
/home/xcarbel/bin/tse.sh: line 26: ~/bin/tmp/tmp0.tmp: Aucun fichier ou répertoire de ce type
/home/xcarbel/bin/tse.sh: line 27: ~/bin/tmp/tmp0.tmp: Aucun fichier ou répertoire de ce type
/home/xcarbel/bin/tse.sh: line 28: ~/bin/tmp/tmp0.tmp: Aucun fichier ou répertoire de ce type
Fin de la connexion a distance avec le tse 192.168.140.1\n
/home/xcarbel/bin/tse.sh: line 30: ~/bin/tmp/tmp0.tmp: Aucun fichier ou répertoire de ce type
/home/xcarbel/bin/tse.sh: line 31: ~/bin/tmp/tmp0.tmp: Aucun fichier ou répertoire de ce type
cat: ~/bin/tmp/tmp0.tmp: Aucun fichier ou répertoire de ce type
Dernière modification par misterbgs (Le 30/01/2008, à 12:07)
Hors ligne
#2 Le 23/01/2008, à 17:43
- tuxce
Re : [RESOLU]script sh pour connexion bureau a distance
le répertoire ~/bin/tmp ne doit pas exister!
il faut le créer.
sinon, pour créer un nom de fichier unique à chaque lancement de script, tu peux utiliser le numéro du processus:
touch fichier_tmp_$$
$$ etant le numéro du processus et reste valable tout le long du script.
Hors ligne
#3 Le 23/01/2008, à 17:48
- lut!n
Re : [RESOLU]script sh pour connexion bureau a distance
Un outil spécialement conçu pour créer les fichier temporaires existe, c'est mktemp. pour l'utiliser c'est très simple:
mon_fichier_temp=$(mktemp)
Le fichier sera créé dans /tmp
Hors ligne
#4 Le 23/01/2008, à 17:53
- Gari
Re : [RESOLU]script sh pour connexion bureau a distance
Je plussoie la méthode de Tuxce (que j'allais proposer mais je suis grilled ).
Sinon pourquoi écrire dans ~/bin/tmp ?
tu peux directement utiliser le répertoire /tmp, qui est tout de même fait pour ça.
EDIT: Waaaaa Lut!n c'est trop génial ça Je connaissais pas !
Dernière modification par Gari (Le 23/01/2008, à 17:53)
Hors ligne
#5 Le 29/01/2008, à 11:42
- misterbgs
Re : [RESOLU]script sh pour connexion bureau a distance
Merci lut!n. ta méthode m'a bien aide.
Merci également a gari et tuxce.
Pour info le dossier ~/bin/tmp etait bien créé...
je me permets une dernière question :
comment écrire au début d'un fichier ? avec mon script je n'écris qu'à la fin; mais dans 2 mois j'aurais qu e faire de ma première connexion..
merci
Hors ligne
#6 Le 29/01/2008, à 12:28
- johnlege
Re : [RESOLU]script sh pour connexion bureau a distance
Bonjour
tu crées dans un fichier temporaire ta trace : imaginons FIC_TEMP
ton fichier log étant FIC_LOG, et tu concatènes puis renommes
Il te faut donc deux fichiers
cat $FIC_LOG >> $FIC_TEMP
mv $FIC_TEMP $FIC_LOG
mais tu peux aussi avoir un log par jour avec la commande
DATE_JOUR=`date '+%j'`
DATE_JOUR contiendra le quantième de l'année que tu pourras inclure dans le nom du fichier. Tu pourras ensuite effacer les fichiers qui sont plus ancien que x jours par la commande find
find ton_repertoire_log -type f -exec rm -f "{}" ";"
Merci d'indiquer résolu dans le titre quand c'est résolu
Hors ligne
#7 Le 30/01/2008, à 12:07
- misterbgs
Re : [RESOLU]script sh pour connexion bureau a distance
Ta methode m'a aidé à trouver la solution.
maintenant tout fonctionne nickel.
Merci a tous.
Hors ligne