Précédent   Forum des professionnels en informatique > Systèmes > Linux > Applications > Shell
Shell Vos questions sur l'utilisation des commandes shell
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 05/06/2006, 11h46   #1
in
Membre Expert
 
Avatar de in
 
Inscription : avril 2003
Messages : 1 609
Détails du profil
Informations personnelles :
Localisation : France, Finistère (Bretagne)

Informations forums :
Inscription : avril 2003
Messages : 1 609
Points : 1 564
Points : 1 564
Par défaut Utilisation de tmpfile

Bonjour, j'utilise un script qui nécessite un fichier temporaire et je lisais ce weekend que pour éviter certain trous de sécurité il valait mieux utiliser la fonction tmpfile pour créer ce fichier temporaire.

Hélas (je ne suis pas doué en shell), je n'arrive pas à m'en servir dans mon script.

Est ce possible, vu que c'est une fonction de librairie C ? Si oui comment m'en servir ?

Si non, existe il une commande unix équivalente ?


merci d'avance
__________________
"If email had been around before the telephone was invented, people would have said, 'Hey, forget email! With this new telephone invention I can actually talk to people!"

Besoin d'une nouvelle méthode pour développer ? -> http://www.la-rache.com/
in est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/06/2006, 13h45   #2
Membre Expert
 
Avatar de 2Eurocents
 
Inscription : septembre 2004
Messages : 2 180
Détails du profil
Informations personnelles :
Âge : 42

Informations forums :
Inscription : septembre 2004
Messages : 2 180
Points : 2 442
Points : 2 442
Citation:
Envoyé par in
Si non, existe il une commande unix équivalente ?
mktemp

Code :
1
2
3
mon_fich_temp=$(mktemp /tmp/temporaire.XXXXXXXXXX)
echo "Stockage temporaire" > $mon_fich_temp
rm -f $mon_fich_temp
Lors de la création, les XXXXX seront remplacés par un "matricule" réputé unique, donc sûr vis-à-vis de la concurrence et des collisions.
__________________
La FAQ Perl est par ici
: La fonction "Rechercher", on aurait dû la nommer "Retrouver" - essayez et vous verrez pourquoi !
2Eurocents est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/06/2006, 14h20   #3
in
Membre Expert
 
Avatar de in
 
Inscription : avril 2003
Messages : 1 609
Détails du profil
Informations personnelles :
Localisation : France, Finistère (Bretagne)

Informations forums :
Inscription : avril 2003
Messages : 1 609
Points : 1 564
Points : 1 564
bon je dois etre un peu brele ...

je fais :

Code :
1
2
tmp=$(mktemp /tmp/temporaire.XXXXXXXXXX)
echo $tmp
et j'obtiens :

Citation:
./mon_script.sh[65]: mktemp: introuvable
Est si c'est sensé marcher pour mktemp, pourquoi pas pour tmpfile ?
__________________
"If email had been around before the telephone was invented, people would have said, 'Hey, forget email! With this new telephone invention I can actually talk to people!"

Besoin d'une nouvelle méthode pour développer ? -> http://www.la-rache.com/
in est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/06/2006, 14h28   #4
Membre Expert
 
Avatar de 2Eurocents
 
Inscription : septembre 2004
Messages : 2 180
Détails du profil
Informations personnelles :
Âge : 42

Informations forums :
Inscription : septembre 2004
Messages : 2 180
Points : 2 442
Points : 2 442
Citation:
Envoyé par in
et j'obtiens : un erreur
A vue de nez, je dirais que :
  • soit mktemp n'est pas accessible par le PATH
  • soit mktemp n'est pas installé/disponible sur ta machine

Citation:
Envoyé par in
Est si c'est sensé marcher pour mktemp, pourquoi pas pour tmpfile ?
mktemp est une fonction shell éponyme à une fonction de la bibliothèque standard du C. Ce n'est pas nécessairement pour autant qu'elle se comporte de la même manière ... et tmpfil est aussi une fonction de la bibliothèque standard, et il n'y a pas (encore) de fonction shell du même nom ...
__________________
La FAQ Perl est par ici
: La fonction "Rechercher", on aurait dû la nommer "Retrouver" - essayez et vous verrez pourquoi !
2Eurocents est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/06/2006, 14h40   #5
in
Membre Expert
 
Avatar de in
 
Inscription : avril 2003
Messages : 1 609
Détails du profil
Informations personnelles :
Localisation : France, Finistère (Bretagne)

Informations forums :
Inscription : avril 2003
Messages : 1 609
Points : 1 564
Points : 1 564
Citation:
Envoyé par 2Eurocents
A vue de nez, je dirais que :
  • soit mktemp n'est pas accessible par le PATH
  • soit mktemp n'est pas installé/disponible sur ta machine
Oui en effet, un which me retourne no mktemp ... et bon si c'est pas dans
/usr/bin, /usr/oocal/bin ... à mon avis ce n'est pas installé. Comme ce script doit tourner dans plusieurs divisions de la boite, je pense que je vais lacher l'affaire.

Citation:
Envoyé par 2Eurocents
mktemp est une fonction shell éponyme à une fonction de la bibliothèque standard du C. Ce n'est pas nécessairement pour autant qu'elle se comporte de la même manière ... et tmpfil est aussi une fonction de la bibliothèque standard, et il n'y a pas (encore) de fonction shell du même nom ...
Ok merci pour l'info.


Du coup, je pose une autre question.
à part créer un fichier temporaire du style tmp$$, ya un truc plus efficace et pas trop lourd pour éviter les problèmes de concurrence et collision ?

(enfin je ne sais meme pas si c'est important pour les gens de ma boite, mais bon je me dis autant le faire bien ce script ...)
__________________
"If email had been around before the telephone was invented, people would have said, 'Hey, forget email! With this new telephone invention I can actually talk to people!"

Besoin d'une nouvelle méthode pour développer ? -> http://www.la-rache.com/
in est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/06/2006, 15h09   #6
Rédacteur
 
Inscription : mars 2004
Messages : 1 298
Détails du profil
Informations forums :
Inscription : mars 2004
Messages : 1 298
Points : 1 450
Points : 1 450
le fichier_tmp.$$ est tous a fait correcte et te garantie une bonne unicité (le systeme interdit 2 process avec le même PID)
__________________
Marc
Slackware for ever ......
BASH - KSH ( http://marcg.developpez.com/ksh/ )
MarcG est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/06/2006, 15h56   #7
in
Membre Expert
 
Avatar de in
 
Inscription : avril 2003
Messages : 1 609
Détails du profil
Informations personnelles :
Localisation : France, Finistère (Bretagne)

Informations forums :
Inscription : avril 2003
Messages : 1 609
Points : 1 564
Points : 1 564
oui je crois que c'est plus simple

mais bon, dans ce que je lisais ce weekend, un simple fichier de lien physique
contenant des :

ln temp1 /etc/passwd
...
ln temp65365 /etc/passwd


peur nuire gravement au system .

mais bon c'est juste pour la beauté du geste que je cherchais à eviter ce pb. Je crois que personne ne m'en voudra de men contenter du $$.

merci bien
__________________
"If email had been around before the telephone was invented, people would have said, 'Hey, forget email! With this new telephone invention I can actually talk to people!"

Besoin d'une nouvelle méthode pour développer ? -> http://www.la-rache.com/
in est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 19h48.


 
 
 
 
Partenaires

Hébergement Web