Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#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 tongue).

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 smile 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