PHWinfo banniere

Titres
PORTAIL ANNUAIRE ARTICLES COMPARATEUR HÉBERGEURS DEVIS FORUMS RÉDUCTEUR D'URL
Précédent   PHWinfo > Forums Hébergement > Forum Serveur - Sécurité et techniques > fr.comp.os.unix > script bash : tester le contenu d'un fichier
S'inscrire FAQ Membres Recherche Messages du jour Marquer les forums comme lus
fr.comp.os.unix Système UNIX.

script bash : tester le contenu d'un fichier

Réponse
 
LinkBack Outils de la discussion
Vieux 26/01/2007, 01h50   #1
n@pster
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut script bash : tester le contenu d'un fichier

Bonjour à tous !
J'ai fais un ptit script de sauvegarde que je veux executer sur mes 3
machines.
Je souhaite donc qu'il teste sur quelle machine il est lancé pour
faire la sauvegarde en fonction.
J'ai pensé à faire une comparaison avec hostname, mais je débute en
script, et ça marche pas :

if [ hostname = "monpc" ];then
echo "on est sur mon pc !"
fi

je me doute bien que ce n'est pas de cette manière qu'on test le
retour d'une fonction, mais j'ai cherché rapidement sur gogeuul et
j'ai pas trouvé... alors je me suis dit qu'ici tout le monde savais
ça

  Réponse avec citation
Vieux 26/01/2007, 07h38   #2
Raphaël SEBAN
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: script bash : tester le contenu d'un fichier

n@pster a écrit :
> Bonjour à tous !
> J'ai fais un ptit script de sauvegarde que je veux executer sur mes 3
> machines.
> Je souhaite donc qu'il teste sur quelle machine il est lancé pour
> faire la sauvegarde en fonction.
> J'ai pensé à faire une comparaison avec hostname, mais je débute en
> script, et ça marche pas :
>
> if [ hostname = "monpc" ];then
> echo "on est sur mon pc !"
> fi
>
> je me doute bien que ce n'est pas de cette manière qu'on test le
> retour d'une fonction, mais j'ai cherché rapidement sur gogeuul et
> j'ai pas trouvé... alors je me suis dit qu'ici tout le monde savais
> ça
>


Bonjour,

Voici vite fait une correction de ton script ci-dessus :

#! /bin/bash

if [ "$HOSTNAME" = 'localhost' ] ; then
echo "C'est mon PC !"
fi

en script shell il faut toujours respecter les espaces blancs
car il sont essentiels pour l'interpréteur, notamment dans
la clause if, où il faut bien espacer les [ ] de chaque côté,
ainsi que le ';' qu'il faut bien aérer du reste des mentions.

Par ailleurs, l'utilisation de la variable $HOSTNAME (attention
de respecter la casse majuscules / minuscules) implique de se
référer au nom de la machine (qui est très souvent 'localhost'
par défaut), ce qui risque de ne pas résoudre ton problème,
aussi je te conseillerai de te baser plutôt sur la variable
$HOME ou sur le binaire `whoami` pour planifier tes sauvegardes
en fonction du compte utilisateur concerné plutôt qu'en fonction
de la machine, ce qui te permettra de gérer des profils de
sauvegarde beaucoup plus précis.

Exemple :


#! /bin/bash

if [ "`whoami`" = 'moncompte' ] ; then
echo "C'est mon compte utilisateur !"
fi

D'une manière plus générale, n'oublies jamais qu'un bon 'man bash'
dans une console de terminal sera toujours ton meilleur ami

@+++
--
Raphaël SEBAN.
Trucs et bidouilles :
http://lelabobidouille.free.fr/
  Réponse avec citation
Vieux 26/01/2007, 09h20   #3
Nicolas George
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: script bash : tester le contenu d'un fichier

Raphaël SEBAN wrote in message <45b9b00f$0$6720$426a34cc@news.free.fr>:
> référer au nom de la machine (qui est très souvent 'localhost'
> par défaut)


Seulement dans les configurations grotesques.
  Réponse avec citation
Vieux 26/01/2007, 11h13   #4
n@pster
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: script bash : tester le contenu d'un fichier

sur mes 3 machines, la commande "hostname" dans un terminal me donne le
nom de la machine, donc sur mon petit réseau, je pense que je vais
pouvoir utiliser cette méthode (parce que en plus, j'ai 2 PC qui ont
le même nom d'utilisateur, donc le "whoami" ne permetterai pas de les
differencier).

En tout cas, merci beaucoup

Fabien

On 26 jan, 08:38, Raphaël SEBAN <rafi...@laposte.net.nospam> wrote:
> n@pster a écrit :
>
>
>
> > Bonjour à tous !
> > J'ai fais un ptit script de sauvegarde que je veux executer sur mes 3
> > machines.
> > Je souhaite donc qu'il teste sur quelle machine il est lancé pour
> > faire la sauvegarde en fonction.
> > J'ai pensé à faire une comparaison avec hostname, mais je débute en
> > script, et ça marche pas :

>
> > if [ hostname = "monpc" ];then
> > echo "on est sur mon pc !"
> > fi

>
> > je me doute bien que ce n'est pas de cette manière qu'on test le
> > retour d'une fonction, mais j'ai cherché rapidement sur gogeuul et
> > j'ai pas trouvé... alors je me suis dit qu'ici tout le monde savais
> > ça Bonjour,

>
> Voici vite fait une correction de ton script ci-dessus :
>
> #! /bin/bash
>
> if [ "$HOSTNAME" = 'localhost' ] ; then
> echo "C'est mon PC !"
> fi
>
> en script shell il faut toujours respecter les espaces blancs
> car il sont essentiels pour l'interpréteur, notamment dans
> la clause if, où il faut bien espacer les [ ] de chaque côté,
> ainsi que le ';' qu'il faut bien aérer du reste des mentions.
>
> Par ailleurs, l'utilisation de la variable $HOSTNAME (attention
> de respecter la casse majuscules / minuscules) implique de se
> référer au nom de la machine (qui est très souvent 'localhost'
> par défaut), ce qui risque de ne pas résoudre ton problème,
> aussi je te conseillerai de te baser plutôt sur la variable
> $HOME ou sur le binaire `whoami` pour planifier tes sauvegardes
> en fonction du compte utilisateur concerné plutôt qu'en fonction
> de la machine, ce qui te permettra de gérer des profils de
> sauvegarde beaucoup plus précis.
>
> Exemple :
>
> #! /bin/bash
>
> if [ "`whoami`" = 'moncompte' ] ; then
> echo "C'est mon compte utilisateur !"
> fi
>
> D'une manière plus générale, n'oublies jamais qu'un bon 'man bash'
> dans une console de terminal sera toujours ton meilleur ami
>
> @+++
> --
> Raphaël SEBAN.
> Trucs et bidouilles :http://lelabobidouille.free.fr/


  Réponse avec citation
Vieux 26/01/2007, 12h10   #5
Luc Habert
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: script bash : tester le contenu d'un fichier

"n@pster" :

> if [ hostname = "monpc" ];then
> echo "on est sur mon pc !"
> fi



Pour inclure dans une ligne de commande la sortie d'une commande, tu
l'inclus entre «`». Ici, cela donne:

if [ x"`hostname`" = xmonpc ]; then

(les x, c'est pour les cas où le hotname commencerait par un «-», ça
pourrait confuser test),
  Réponse avec citation
Vieux 26/01/2007, 12h19   #6
Matthieu Moy
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: script bash : tester le contenu d'un fichier

lhabert@clipper.ens.fr (Luc Habert) writes:

> Pour inclure dans une ligne de commande la sortie d'une commande, tu
> l'inclus entre «`». Ici, cela donne:
>
> if [ x"`hostname`" = xmonpc ]; then


Perso, je préfère $(hostname) qui s'imbrique mieux, et qui est sauf
erreur de ma part la plus portable (en restant dans les bourne
shells).

--
Matthieu
  Réponse avec citation
Vieux 26/01/2007, 14h06   #7
Stephane Chazelas
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: script bash : tester le contenu d'un fichier

2007-01-26, 13:19(+01), Matthieu Moy:
> lhabert@clipper.ens.fr (Luc Habert) writes:
>
>> Pour inclure dans une ligne de commande la sortie d'une commande, tu
>> l'inclus entre «`». Ici, cela donne:
>>
>> if [ x"`hostname`" = xmonpc ]; then

>
> Perso, je préfère $(hostname) qui s'imbrique mieux, et qui est sauf
> erreur de ma part la plus portable (en restant dans les bourne
> shells).


Non, $(...) est POSIX mais pas Bourne (mais Bourne est un tres
vieux shell, sur tous les Unix de moins de 15 ans, on trouve un
sh POSIX (parfois pas dans /bin, quand /bin/sh est resté un
Bourne shell pour backward compatibility comme sous Solaris)).

Dans les shells POSIX, le "x" n'est pas necessaire.

hostname n'est pas une commande POSIX, "uname -n" l'est.

POSIX:

if [ "$(uname -n)" = monpc ]; then...

Bourne ou POSIX:

case `uname -n` in
monpc) ...
esac
if [ monpc = "`hostname`" ]; then...
if [ "x`hostname`" = "xmonpc" ]; then...

--
Stéphane
  Réponse avec citation
Vieux 26/01/2007, 17h05   #8
Matthieu Moy
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: script bash : tester le contenu d'un fichier

Stephane Chazelas <cette.adresse@est.invalid> writes:

> Non, $(...) est POSIX mais pas Bourne (mais Bourne est un tres
> vieux shell, sur tous les Unix de moins de 15 ans, on trouve un
> sh POSIX


Oui, je disais «les bourne shells» par opposition aux C shells.

--
Matthieu
  Réponse avec citation
Vieux 26/01/2007, 17h20   #9
Stephane Chazelas
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: script bash : tester le contenu d'un fichier

2007-01-26, 18:05(+01), Matthieu Moy:
> Stephane Chazelas <cette.adresse@est.invalid> writes:
>
>> Non, $(...) est POSIX mais pas Bourne (mais Bourne est un tres
>> vieux shell, sur tous les Unix de moins de 15 ans, on trouve un
>> sh POSIX

>
> Oui, je disais «les bourne shells» par opposition aux C shells.


Oui, mais en l'occurrence $(...) n'est pas Bourne. Il est
reconnu par tous les descendants du Bourne shell, mais pas par
le Bourne shell.

Les shells de la famille csh (csh, tcsh) reconnaissent `cmd args` seulement.

Les shells de la famille rc ont `{cmd args} (ou `cmd) ou encore,
en specifiant le separateur:

``({head -n1 /etc/passwd}

(les shells rc-like sont d'ailleurs les seuls qui savent
vraiment retourner l'output d'une commande: ``(){cmd})

tcsh et tous les Bourne-like shells (sauf zsh) expandent les
wildcards. csh, les rc-likes et zsh (sauf en emulation d'autres
shells) n'ont pas ce probleme.


--
Stéphane
  Réponse avec citation
Vieux 26/01/2007, 18h13   #10
n@pster
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: script bash : tester le contenu d'un fichier

Ba merci à tous, j'ai réussi à faire mon ptit script, ça marche
impécable

On 26 jan, 02:50, "n@pster" <fabien.mo...@gmail.com> wrote:
> Bonjour à tous !
> J'ai fais un ptit script de sauvegarde que je veux executer sur mes 3
> machines.
> Je souhaite donc qu'il teste sur quelle machine il est lancé pour
> faire la sauvegarde en fonction.
> J'ai pensé à faire une comparaison avec hostname, mais je débute en
> script, et ça marche pas :
>
> if [ hostname = "monpc" ];then
> echo "on est sur mon pc !"
> fi
>
> je me doute bien que ce n'est pas de cette manière qu'on test le
> retour d'une fonction, mais j'ai cherché rapidement sur gogeuul et
> j'ai pas trouvé... alors je me suis dit qu'ici tout le monde savais
> ça


  Réponse avec citation
Vieux 26/01/2007, 18h15   #11
n@pster
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: script bash : tester le contenu d'un fichier

Ba merci à tous, j'ai réussi à faire mon ptit script, ça marche
impécable

Fabien

  Réponse avec citation
Réponse


Outils de la discussion

Règles de messages
Vous ne pouvez pas créer de nouvelles discussions
Vous ne pouvez pas envoyer des réponses
Vous ne pouvez pas envoyer des pièces jointes
Vous ne pouvez pas modifier vos messages

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Trackbacks are oui
Pingbacks are oui
Refbacks are oui


Fuseau horaire GMT +1. Il est actuellement 13h41.


Édité par : vBulletin® version 3.7.3
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.2.0 RC5 Tous droits réservés.
Version française #16 par l'association vBulletin francophone
PHWinfo est un site Éducation Sans Frontières ©2000-2008
Ad Management by RedTyger
©Tous droits réservés par les parties respectives
Page generated in 0,18889 seconds with 19 queries