Bonjour =E0 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=E9 pour
faire la sauvegarde en fonction.
J'ai pens=E9 =E0 faire une comparaison avec hostname, mais je d=E9bute en
script, et =E7a marche pas :
if [ hostname =3D "monpc" ];then
echo "on est sur mon pc !"
fi
je me doute bien que ce n'est pas de cette mani=E8re qu'on test le
retour d'une fonction, mais j'ai cherch=E9 rapidement sur gogeuul et
j'ai pas trouv=E9... alors je me suis dit qu'ici tout le monde savais
=E7a ;)
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Raphaël SEBAN
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/
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/
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/
Nicolas George
Raphaël SEBAN wrote in message <45b9b00f$0$6720$:
référer au nom de la machine (qui est très souvent 'localhost' par défaut)
Seulement dans les configurations grotesques.
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)
référer au nom de la machine (qui est très souvent 'localhost' par défaut)
Seulement dans les configurations grotesques.
n
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 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 ;)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/
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:
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/
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 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 ;)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/
lhabert
"" :
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),
"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),
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
Stephane Chazelas
2007-01-26, 13:19(+01), Matthieu Moy:
(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
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...
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
Matthieu Moy
Stephane Chazelas 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.
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
Stephane Chazelas
2007-01-26, 18:05(+01), Matthieu Moy:
Stephane Chazelas 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.
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.
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
n
Ba merci à tous, j'ai réussi à faire mon ptit script, ça marche impécable :D
On 26 jan, 02:50, "" 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 ;)
Ba merci à tous, j'ai réussi à faire mon ptit script, ça marche
impécable :D
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 ;)
Ba merci à tous, j'ai réussi à faire mon ptit script, ça marche impécable :D
On 26 jan, 02:50, "" 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 ;)
n
Ba merci à tous, j'ai réussi à faire mon ptit script, ça marche impécable :D
Fabien
Ba merci à tous, j'ai réussi à faire mon ptit script, ça marche
impécable :D