Je misais beaucoup d'espoir sur le « export » mais ça ne change rien au
problème, quand « bash -c 'fct arg1 arg2' » est exécuté sur l'hôte
distant, j'ai alors le message me disant que fct est introuvable. Bref,
l'export ne marche pas et ftc est inconnue aux yeux de l'hôte distant.
Savez-vous comme faire marcher le code ci-dessus ? Peut-être une option
magique du côté de ssh ?
Je précise qu'on voit sur le Web des solutions comme ça :
----------------------------------------
fct="
echo \"Ma super fonction qui fait plein de trucs...\"
# etc.
"
- je perds la coloration syntaxique quand j'écris le contenu de fct et
ça c'est vraiment trop horrible.
- en plus il faut que je m'amuse à échapper tous les ", c'est vraiment
pénible.
bash: -c: ligne 0: Caractère de fin de fichier (EOF) prématuré lors de la recherche du « ' » correspondant bash: -c: ligne1: Erreur de syntaxe : fin de fichier prématurée.
Beuh, chez moi ça marche. Tu as bien copier-collé?
Autant pour moi. Je viens de refaire un copié-collé et ça fonctionne. Je devais être un peu fatigué hier soir.
J'avoue ne pas comprendre la présence des mais j'imagine qu'il y a une raison.
Mon but est de passer en argument à ssh la ligne de commande
bash -c 'F arg1 arg2'
. Si je la met juste entre '', ça louze parce que j'ai des ' à l'intérieur. La solution consiste à remplacer chaque ' intérieur par ''' ce qui veut dire: - premier ' ferme la string - ' un ' echappé pour qu'il ne soit pas interprété par le shell - deuxième ' on réouvre la string.
J'aurais pu mettre "bash -c 'F arg1 arg2'", ça serait revenu au même ici, mais je n'aime pas parce que ça autorise les évaluations de variables et de `.
Ok. C'est très clair. Merci.
-- François Lafont
Le 13/12/2012 12:23, Luc Habert a écrit :
ssh -o 'SendEnv F' root@192.168.0.116 'bash -c '''F arg1 arg2''
Chez moi, ça donne :
bash: -c: ligne 0: Caractère de fin de fichier (EOF) prématuré lors de
la recherche du « ' » correspondant
bash: -c: ligne1: Erreur de syntaxe : fin de fichier prématurée.
Beuh, chez moi ça marche. Tu as bien copier-collé?
Autant pour moi. Je viens de refaire un copié-collé et ça fonctionne. Je
devais être un peu fatigué hier soir.
J'avoue ne pas comprendre la présence des mais j'imagine qu'il y a une
raison.
Mon but est de passer en argument à ssh la ligne de commande
bash -c 'F arg1 arg2'
. Si je la met juste entre '', ça louze parce que j'ai des ' à l'intérieur.
La solution consiste à remplacer chaque ' intérieur par ''' ce qui veut
dire:
- premier ' ferme la string
- ' un ' echappé pour qu'il ne soit pas interprété par le shell
- deuxième ' on réouvre la string.
J'aurais pu mettre "bash -c 'F arg1 arg2'", ça serait revenu au même ici,
mais je n'aime pas parce que ça autorise les évaluations de variables et de `.
bash: -c: ligne 0: Caractère de fin de fichier (EOF) prématuré lors de la recherche du « ' » correspondant bash: -c: ligne1: Erreur de syntaxe : fin de fichier prématurée.
Beuh, chez moi ça marche. Tu as bien copier-collé?
Autant pour moi. Je viens de refaire un copié-collé et ça fonctionne. Je devais être un peu fatigué hier soir.
J'avoue ne pas comprendre la présence des mais j'imagine qu'il y a une raison.
Mon but est de passer en argument à ssh la ligne de commande
bash -c 'F arg1 arg2'
. Si je la met juste entre '', ça louze parce que j'ai des ' à l'intérieur. La solution consiste à remplacer chaque ' intérieur par ''' ce qui veut dire: - premier ' ferme la string - ' un ' echappé pour qu'il ne soit pas interprété par le shell - deuxième ' on réouvre la string.
J'aurais pu mettre "bash -c 'F arg1 arg2'", ça serait revenu au même ici, mais je n'aime pas parce que ça autorise les évaluations de variables et de `.
Ok. C'est très clair. Merci.
-- François Lafont
Francois Lafont
Le 13/12/2012 22:56, Francois Lafont a écrit :
Autant pour moi.
Je voulais écrire « Au temps pour moi », of course. ;-)
-- François Lafont
Le 13/12/2012 22:56, Francois Lafont a écrit :
Autant pour moi.
Je voulais écrire « Au temps pour moi », of course. ;-)
Ok. Perso, je trouve que cette basherie est pratique des fois.
-- François Lafont
Luc.Habert.00__arjf
Francois Lafont :
C'est quand même sioux cette subtilité entre :
- ce ne sont pas des arguments que prend ssh
Si, comme toutes les commandes. Mais il les reassemble en une unique string, qu'il envoie a la machine distante en la faisant executer par le shell de login a l'autre bout. Alors qu'il pourrait transmettre au serveur les arguments un par un, et le serveur ferait alors un exec dessus sans s'emmerder avec un shell. C'est une connerie que ssh a herite de son ancetre rsh.
Comment le savoir à l'avance ? Est-ce que par exemple le synopsis de la commande ssh (dans la page man) me permet de le savoir à l'avance ?
La page de man est remarquablement peu claire. Si on la prend au pied de la lettre, on n'a meme pas le droit d'ajouter des arguments derriere, seule la forme avec une ligne de commande complete en un argument est supportee.
Par exemple la commande sudo n'a pas l'air de fonctionner ainsi (mais je n'en suis pas sûr).
Oui, les auteurs de sudo ont allume leur cerveau avant de coder. A l'inverse, il y a su dont l'argument -c prend une ligne de commande.
Francois Lafont :
C'est quand même sioux cette subtilité entre :
- ce ne sont pas des arguments que prend ssh
Si, comme toutes les commandes. Mais il les reassemble en une unique string,
qu'il envoie a la machine distante en la faisant executer par le shell de
login a l'autre bout. Alors qu'il pourrait transmettre au serveur les
arguments un par un, et le serveur ferait alors un exec dessus sans
s'emmerder avec un shell. C'est une connerie que ssh a herite de son ancetre
rsh.
Comment le savoir à l'avance ? Est-ce que par exemple le synopsis de la
commande ssh (dans la page man) me permet de le savoir à l'avance ?
La page de man est remarquablement peu claire. Si on la prend au pied de la
lettre, on n'a meme pas le droit d'ajouter des arguments derriere, seule la
forme avec une ligne de commande complete en un argument est supportee.
Par exemple la commande sudo n'a pas l'air de fonctionner ainsi (mais je
n'en suis pas sûr).
Oui, les auteurs de sudo ont allume leur cerveau avant de coder. A
l'inverse, il y a su dont l'argument -c prend une ligne de commande.
Si, comme toutes les commandes. Mais il les reassemble en une unique string, qu'il envoie a la machine distante en la faisant executer par le shell de login a l'autre bout. Alors qu'il pourrait transmettre au serveur les arguments un par un, et le serveur ferait alors un exec dessus sans s'emmerder avec un shell. C'est une connerie que ssh a herite de son ancetre rsh.
Comment le savoir à l'avance ? Est-ce que par exemple le synopsis de la commande ssh (dans la page man) me permet de le savoir à l'avance ?
La page de man est remarquablement peu claire. Si on la prend au pied de la lettre, on n'a meme pas le droit d'ajouter des arguments derriere, seule la forme avec une ligne de commande complete en un argument est supportee.
Par exemple la commande sudo n'a pas l'air de fonctionner ainsi (mais je n'en suis pas sûr).
Oui, les auteurs de sudo ont allume leur cerveau avant de coder. A l'inverse, il y a su dont l'argument -c prend une ligne de commande.
Luc.Habert.00__arjf
Francois Lafont :
Autant pour moi.
Je voulais écrire « Au temps pour moi », of course. ;-)
Ah non, autant pour moi est bien plus logique!
-- fu2 fr.lettres.langue.francaise.debats
Francois Lafont :
Autant pour moi.
Je voulais écrire « Au temps pour moi », of course. ;-)
Je voulais écrire « Au temps pour moi », of course. ;-)
Ah non, autant pour moi est bien plus logique!
-- fu2 fr.lettres.langue.francaise.debats
Francois Lafont
Le 13/12/2012 22:59, Luc Habert a écrit :
C'est quand même sioux cette subtilité entre :
- ce ne sont pas des arguments que prend ssh
Si, comme toutes les commandes.
D'accord ça me rassure quelque part qu'on reste dans le schéma classique du découpage des arguments en mots séparés par des blancs.
Mais il les reassemble en une unique string, qu'il envoie a la machine distante en la faisant executer par le shell de login a l'autre bout. Alors qu'il pourrait transmettre au serveur les arguments un par un, et le serveur ferait alors un exec dessus sans s'emmerder avec un shell. C'est une connerie que ssh a herite de son ancetre rsh.
Comment le savoir à l'avance ? Est-ce que par exemple le synopsis de la commande ssh (dans la page man) me permet de le savoir à l'avance ?
La page de man est remarquablement peu claire. Si on la prend au pied de la lettre, on n'a meme pas le droit d'ajouter des arguments derriere, seule la forme avec une ligne de commande complete en un argument est supportee.
Par exemple la commande sudo n'a pas l'air de fonctionner ainsi (mais je n'en suis pas sûr).
Oui, les auteurs de sudo ont allume leur cerveau avant de coder. A l'inverse, il y a su dont l'argument -c prend une ligne de commande.
Ok, c'est clair merci.
Après, qu'on soit parfois dans le cas de ssh et parfois dans celui de sudo, ça ne me dérangerait pas si au moins c'était bien indiqué dans la page man (dans les deux cas).
-- François Lafont
Le 13/12/2012 22:59, Luc Habert a écrit :
C'est quand même sioux cette subtilité entre :
- ce ne sont pas des arguments que prend ssh
Si, comme toutes les commandes.
D'accord ça me rassure quelque part qu'on reste dans le schéma classique
du découpage des arguments en mots séparés par des blancs.
Mais il les reassemble en une unique string,
qu'il envoie a la machine distante en la faisant executer par le shell de
login a l'autre bout. Alors qu'il pourrait transmettre au serveur les
arguments un par un, et le serveur ferait alors un exec dessus sans
s'emmerder avec un shell. C'est une connerie que ssh a herite de son ancetre
rsh.
Comment le savoir à l'avance ? Est-ce que par exemple le synopsis de la
commande ssh (dans la page man) me permet de le savoir à l'avance ?
La page de man est remarquablement peu claire. Si on la prend au pied de la
lettre, on n'a meme pas le droit d'ajouter des arguments derriere, seule la
forme avec une ligne de commande complete en un argument est supportee.
Par exemple la commande sudo n'a pas l'air de fonctionner ainsi (mais je
n'en suis pas sûr).
Oui, les auteurs de sudo ont allume leur cerveau avant de coder. A
l'inverse, il y a su dont l'argument -c prend une ligne de commande.
Ok, c'est clair merci.
Après, qu'on soit parfois dans le cas de ssh et parfois dans celui de
sudo, ça ne me dérangerait pas si au moins c'était bien indiqué dans la
page man (dans les deux cas).
D'accord ça me rassure quelque part qu'on reste dans le schéma classique du découpage des arguments en mots séparés par des blancs.
Mais il les reassemble en une unique string, qu'il envoie a la machine distante en la faisant executer par le shell de login a l'autre bout. Alors qu'il pourrait transmettre au serveur les arguments un par un, et le serveur ferait alors un exec dessus sans s'emmerder avec un shell. C'est une connerie que ssh a herite de son ancetre rsh.
Comment le savoir à l'avance ? Est-ce que par exemple le synopsis de la commande ssh (dans la page man) me permet de le savoir à l'avance ?
La page de man est remarquablement peu claire. Si on la prend au pied de la lettre, on n'a meme pas le droit d'ajouter des arguments derriere, seule la forme avec une ligne de commande complete en un argument est supportee.
Par exemple la commande sudo n'a pas l'air de fonctionner ainsi (mais je n'en suis pas sûr).
Oui, les auteurs de sudo ont allume leur cerveau avant de coder. A l'inverse, il y a su dont l'argument -c prend une ligne de commande.
Ok, c'est clair merci.
Après, qu'on soit parfois dans le cas de ssh et parfois dans celui de sudo, ça ne me dérangerait pas si au moins c'était bien indiqué dans la page man (dans les deux cas).
-- François Lafont
Lucas Levrel
Le 13 décembre 2012, Luc Habert a écrit :
Francois Lafont :
Autant pour moi.
Je voulais écrire « Au temps pour moi », of course. ;-)
Ah non, autant pour moi est bien plus logique!
Mais l'orthographe n'a pas vraiment à être logique (contrairement à la grammaire).
-- LL
Le 13 décembre 2012, Luc Habert a écrit :
Francois Lafont :
Autant pour moi.
Je voulais écrire « Au temps pour moi », of course. ;-)
Ah non, autant pour moi est bien plus logique!
Mais l'orthographe n'a pas vraiment à être logique (contrairement à la
grammaire).