|
|
|
|
||||||
| fr.comp.os.unix Système UNIX. |
![]() |
|
|
LinkBack | Outils de la discussion |
|
|
#1 |
|
Messages: n/a
Hébergeur: |
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 ![]() |
|
|
|
#2 |
|
Messages: n/a
Hébergeur: |
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/ |
|
|
|
#3 |
|
Messages: n/a
Hébergeur: |
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. |
|
|
|
#4 |
|
Messages: n/a
Hébergeur: |
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/ |
|
|
|
#5 |
|
Messages: n/a
Hébergeur: |
"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), |
|
|
|
#6 |
|
Messages: n/a
Hébergeur: |
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 |
|
|
|
#7 |
|
Messages: n/a
Hébergeur: |
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 |
|
|
|
#8 |
|
Messages: n/a
Hébergeur: |
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 |
|
|
|
#9 |
|
Messages: n/a
Hébergeur: |
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 |
|
|
|
#10 |
|
Messages: n/a
Hébergeur: |
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 ![]() |
|
|
|
#11 |
|
Messages: n/a
Hébergeur: |
Ba merci à tous, j'ai réussi à faire mon ptit script, ça marche
impécable Fabien |
|
![]() |
| Outils de la discussion | |
|
|