2008-09-21, 14:00(+02), Thomas:
[...]
>> > ssh ordi-distant < script-local
[...]
> par contre, le shell distant va être "en mode interactif" et va croire
> que le contenu de script-local est tapé au clavier, c'est bien ça ?
Non, comme le stdin de ssh n'est pas un terminal, ssh ne lance
pas un shell interactif a l'autre bout.
C'est comme si tu faisais:
"$SHELL" < script-local
> est ce que je peux (continuer à) écrire script-local comme si il allait
> être exécuté en tant que script ? ça ne risque pas de poser de pb ?
Non, a part que si ton script lit son entree standard, ca va
lire le contenu du script!
> par exemple, tous mes scripts commencent par
> #!/bin/sh -x -
> qu'est ce que ça fait ?
C'est un commentaire pour le shell, donc ca ne fait rien.
Si tu veux activer l'option x quelle que soit la facon dont le
script est lancé, utilise plutot "set -x".
>> j'aurais plutot mis : ssh ordi-distant sh < script-local
>
> merci, qu'est ce que ça fait exactement ?
>
> - est ce que c'est juste au cas où le shell de login ne serais pas sh ?
[...]
Oui.
2008-09-21, 14:00(+02), Thomas:
[...]
>> > ssh ordi-distant < script-local
[...]
> par contre, le shell distant va être "en mode interactif" et va croire
> que le contenu de script-local est tapé au clavier, c'est bien ça ?
Non, comme le stdin de ssh n'est pas un terminal, ssh ne lance
pas un shell interactif a l'autre bout.
C'est comme si tu faisais:
"$SHELL" < script-local
> est ce que je peux (continuer à) écrire script-local comme si il allait
> être exécuté en tant que script ? ça ne risque pas de poser de pb ?
Non, a part que si ton script lit son entree standard, ca va
lire le contenu du script!
> par exemple, tous mes scripts commencent par
> #!/bin/sh -x -
> qu'est ce que ça fait ?
C'est un commentaire pour le shell, donc ca ne fait rien.
Si tu veux activer l'option x quelle que soit la facon dont le
script est lancé, utilise plutot "set -x".
>> j'aurais plutot mis : ssh ordi-distant sh < script-local
>
> merci, qu'est ce que ça fait exactement ?
>
> - est ce que c'est juste au cas où le shell de login ne serais pas sh ?
[...]
Oui.
2008-09-21, 14:00(+02), Thomas:
[...]
>> > ssh ordi-distant < script-local
[...]
> par contre, le shell distant va être "en mode interactif" et va croire
> que le contenu de script-local est tapé au clavier, c'est bien ça ?
Non, comme le stdin de ssh n'est pas un terminal, ssh ne lance
pas un shell interactif a l'autre bout.
C'est comme si tu faisais:
"$SHELL" < script-local
> est ce que je peux (continuer à) écrire script-local comme si il allait
> être exécuté en tant que script ? ça ne risque pas de poser de pb ?
Non, a part que si ton script lit son entree standard, ca va
lire le contenu du script!
> par exemple, tous mes scripts commencent par
> #!/bin/sh -x -
> qu'est ce que ça fait ?
C'est un commentaire pour le shell, donc ca ne fait rien.
Si tu veux activer l'option x quelle que soit la facon dont le
script est lancé, utilise plutot "set -x".
>> j'aurais plutot mis : ssh ordi-distant sh < script-local
>
> merci, qu'est ce que ça fait exactement ?
>
> - est ce que c'est juste au cas où le shell de login ne serais pas sh ?
[...]
Oui.
donc
"$SHELL"
lance un shell interactif,
mais
"$SHELL" < script-local
lance un shell pas interactif
c'est ça ? :-)
#!/bin/sh -
DOSSIERPARENT=`dirname "$0" || echo " erreur dirname : $? "`
set -x
... et finalement, c'est mieux :-)
mais ta solution m'a fait penser à une autre :
echo 'commandes' | ssh ordi-distant
il ne me reste plus qu'un souci mineur :
j'ai pas bien compris le fonctionnement de "<retour>"
il vaut mieux que je l'utilise dans ou en dehors des guillemets ?
apparemment, le résultat est sur une seule ligne : les retours ne sont
pas intégrés à la chaîne, ils disparaissent
il suffit que je rajoute des ";" pour séparer les commandes, ou il y a
autre chose de mieux ?
>> j'aurais plutot mis : ssh ordi-distant sh < script-local
>
> merci, qu'est ce que ça fait exactement ?
>
> - est ce que c'est juste au cas où le shell de login ne serais pas sh ?
[...]
Oui.
ok merci :-)
par contre j'aimerais comprendre comment marchent - et -c stp :-)
par exemple,
pourquoi en tête de script on met
#!/bin/sh -
et pas
#!/bin/sh -c
et pourquoi ssh utilise -c quand on lui demande d'exécuter une commande
précise ?
donc
"$SHELL"
lance un shell interactif,
mais
"$SHELL" < script-local
lance un shell pas interactif
c'est ça ? :-)
#!/bin/sh -
DOSSIERPARENT=`dirname "$0" || echo " erreur dirname : $? "`
set -x
... et finalement, c'est mieux :-)
mais ta solution m'a fait penser à une autre :
echo 'commandes' | ssh ordi-distant
il ne me reste plus qu'un souci mineur :
j'ai pas bien compris le fonctionnement de "<retour>"
il vaut mieux que je l'utilise dans ou en dehors des guillemets ?
apparemment, le résultat est sur une seule ligne : les retours ne sont
pas intégrés à la chaîne, ils disparaissent
il suffit que je rajoute des ";" pour séparer les commandes, ou il y a
autre chose de mieux ?
>> j'aurais plutot mis : ssh ordi-distant sh < script-local
>
> merci, qu'est ce que ça fait exactement ?
>
> - est ce que c'est juste au cas où le shell de login ne serais pas sh ?
[...]
Oui.
ok merci :-)
par contre j'aimerais comprendre comment marchent - et -c stp :-)
par exemple,
pourquoi en tête de script on met
#!/bin/sh -
et pas
#!/bin/sh -c
et pourquoi ssh utilise -c quand on lui demande d'exécuter une commande
précise ?
donc
"$SHELL"
lance un shell interactif,
mais
"$SHELL" < script-local
lance un shell pas interactif
c'est ça ? :-)
#!/bin/sh -
DOSSIERPARENT=`dirname "$0" || echo " erreur dirname : $? "`
set -x
... et finalement, c'est mieux :-)
mais ta solution m'a fait penser à une autre :
echo 'commandes' | ssh ordi-distant
il ne me reste plus qu'un souci mineur :
j'ai pas bien compris le fonctionnement de "<retour>"
il vaut mieux que je l'utilise dans ou en dehors des guillemets ?
apparemment, le résultat est sur une seule ligne : les retours ne sont
pas intégrés à la chaîne, ils disparaissent
il suffit que je rajoute des ";" pour séparer les commandes, ou il y a
autre chose de mieux ?
>> j'aurais plutot mis : ssh ordi-distant sh < script-local
>
> merci, qu'est ce que ça fait exactement ?
>
> - est ce que c'est juste au cas où le shell de login ne serais pas sh ?
[...]
Oui.
ok merci :-)
par contre j'aimerais comprendre comment marchent - et -c stp :-)
par exemple,
pourquoi en tête de script on met
#!/bin/sh -
et pas
#!/bin/sh -c
et pourquoi ssh utilise -c quand on lui demande d'exécuter une commande
précise ?
2008-10-14, 16:46(+02), Thomas:
[...]
> donc
> "$SHELL"
> lance un shell interactif,
Si l'entree standard est un terminal.
> mais
> "$SHELL" < script-local
> lance un shell pas interactif
>
> c'est ça ? :-)
Ce sont les memes arguments passés au $SHELL. Ce qui change est
que ton shell redirige l'entree standard depuis un fichier avant
de lancer $SHELL.
> mais ta solution m'a fait penser à une autre :
>
> echo 'commandes' | ssh ordi-distant
>
> il ne me reste plus qu'un souci mineur :
> j'ai pas bien compris le fonctionnement de "<retour>"
>
> il vaut mieux que je l'utilise dans ou en dehors des guillemets ?
>
> apparemment, le résultat est sur une seule ligne : les retours ne sont
> pas intégrés à la chaîne, ils disparaissent
> il suffit que je rajoute des ";" pour séparer les commandes, ou il y a
> autre chose de mieux ?
Je ne comprends pas la question. A quoi fais-tu reference.
Tu peux faire:
echo '
commande1
commande2
' | ssh ordi-distant
ou
ssh ordi-distant << EOF
commande1
commande2
EOF
ou
ssh ordi-distant << EOF
commande $(pas expandé par le shell local)
EOF
>> >> j'aurais plutot mis : ssh ordi-distant sh < script-local
>> >
>> > merci, qu'est ce que ça fait exactement ?
>> >
>> > - est ce que c'est juste au cas où le shell de login ne serais pas sh ?
>> [...]
>>
>> Oui.
>
> ok merci :-)
>
>
> par contre j'aimerais comprendre comment marchent - et -c stp :-)
"-", c'est pour mettre fin aux options, pour etre sur que sh -
-c, execute le script qui se trouve dans le fichier "-c".
-c c'est pour passer le contenu d'un script en ligne de
commande.
sh -c 'cmd1; cmd2'
execute la commande line "cmd1; cmd2", sans que tu aies a la
mettre dans un fichier.
2008-10-14, 16:46(+02), Thomas:
[...]
> donc
> "$SHELL"
> lance un shell interactif,
Si l'entree standard est un terminal.
> mais
> "$SHELL" < script-local
> lance un shell pas interactif
>
> c'est ça ? :-)
Ce sont les memes arguments passés au $SHELL. Ce qui change est
que ton shell redirige l'entree standard depuis un fichier avant
de lancer $SHELL.
> mais ta solution m'a fait penser à une autre :
>
> echo 'commandes' | ssh ordi-distant
>
> il ne me reste plus qu'un souci mineur :
> j'ai pas bien compris le fonctionnement de "<retour>"
>
> il vaut mieux que je l'utilise dans ou en dehors des guillemets ?
>
> apparemment, le résultat est sur une seule ligne : les retours ne sont
> pas intégrés à la chaîne, ils disparaissent
> il suffit que je rajoute des ";" pour séparer les commandes, ou il y a
> autre chose de mieux ?
Je ne comprends pas la question. A quoi fais-tu reference.
Tu peux faire:
echo '
commande1
commande2
' | ssh ordi-distant
ou
ssh ordi-distant << EOF
commande1
commande2
EOF
ou
ssh ordi-distant << EOF
commande $(pas expandé par le shell local)
EOF
>> >> j'aurais plutot mis : ssh ordi-distant sh < script-local
>> >
>> > merci, qu'est ce que ça fait exactement ?
>> >
>> > - est ce que c'est juste au cas où le shell de login ne serais pas sh ?
>> [...]
>>
>> Oui.
>
> ok merci :-)
>
>
> par contre j'aimerais comprendre comment marchent - et -c stp :-)
"-", c'est pour mettre fin aux options, pour etre sur que sh -
-c, execute le script qui se trouve dans le fichier "-c".
-c c'est pour passer le contenu d'un script en ligne de
commande.
sh -c 'cmd1; cmd2'
execute la commande line "cmd1; cmd2", sans que tu aies a la
mettre dans un fichier.
2008-10-14, 16:46(+02), Thomas:
[...]
> donc
> "$SHELL"
> lance un shell interactif,
Si l'entree standard est un terminal.
> mais
> "$SHELL" < script-local
> lance un shell pas interactif
>
> c'est ça ? :-)
Ce sont les memes arguments passés au $SHELL. Ce qui change est
que ton shell redirige l'entree standard depuis un fichier avant
de lancer $SHELL.
> mais ta solution m'a fait penser à une autre :
>
> echo 'commandes' | ssh ordi-distant
>
> il ne me reste plus qu'un souci mineur :
> j'ai pas bien compris le fonctionnement de "<retour>"
>
> il vaut mieux que je l'utilise dans ou en dehors des guillemets ?
>
> apparemment, le résultat est sur une seule ligne : les retours ne sont
> pas intégrés à la chaîne, ils disparaissent
> il suffit que je rajoute des ";" pour séparer les commandes, ou il y a
> autre chose de mieux ?
Je ne comprends pas la question. A quoi fais-tu reference.
Tu peux faire:
echo '
commande1
commande2
' | ssh ordi-distant
ou
ssh ordi-distant << EOF
commande1
commande2
EOF
ou
ssh ordi-distant << EOF
commande $(pas expandé par le shell local)
EOF
>> >> j'aurais plutot mis : ssh ordi-distant sh < script-local
>> >
>> > merci, qu'est ce que ça fait exactement ?
>> >
>> > - est ce que c'est juste au cas où le shell de login ne serais pas sh ?
>> [...]
>>
>> Oui.
>
> ok merci :-)
>
>
> par contre j'aimerais comprendre comment marchent - et -c stp :-)
"-", c'est pour mettre fin aux options, pour etre sur que sh -
-c, execute le script qui se trouve dans le fichier "-c".
-c c'est pour passer le contenu d'un script en ligne de
commande.
sh -c 'cmd1; cmd2'
execute la commande line "cmd1; cmd2", sans que tu aies a la
mettre dans un fichier.