afficher au term une trentaine de lignes et mettre la dernière dans une variab le
10 réponses
Une Bévue
je me connecte par ssh pour faire tourner un script qui sort une 30taine
de lignes.
je détecte par grep la dernière (la précédente contient "iMac's URL :")
pour la mettre dans une variable "URL" que j'envoie en local sur un
butineur.
pour l'instant, je fais ça :
#!/usr/bin/zsh
URL=(`/usr/bin/xclip -o`)
SRV=yt@iMac
RMT_HOME="/Users/yt"
RMT_RECETTE="${RMT_HOME}/bin/recette"
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
Une Bévue
Le 26/01/2012 22:51, Une Bévue a écrit :
mon but, donc est de sortir au term la trentaine de lignes tout en plaçant la dernère dans une variable.
j'ai une première solution, qui ne me convient pas : STDOUT=`/usr/bin/ssh ${SRV} "${RMT_RECETTE_TEE}"` echo "STDOUT :n${STDOUT}" URL=(`echo ${STDOUT} | grep -A 1 "iMac's URL :" | tail -n 1 `) echo "URL = ${URL}"
car la sortie de STDOUT vient d'un seul coup (j'ai mis des sleep 0.5 dans le script distant)
ce qu'il me faudrait, c'est lire au fur et à mesure la sortie de : /usr/bin/ssh ${SRV} "${RMT_RECETTE_TEE}"
envoyer ça vers deux commandes simultanément, ie. echo et grep
donc sur deux fifos.
Le 26/01/2012 22:51, Une Bévue a écrit :
mon but, donc est de sortir au term la trentaine de lignes tout en
plaçant la dernère dans une variable.
j'ai une première solution, qui ne me convient pas :
STDOUT=`/usr/bin/ssh ${SRV} "${RMT_RECETTE_TEE}"`
echo "STDOUT :n${STDOUT}"
URL=(`echo ${STDOUT} | grep -A 1 "iMac's URL :" | tail -n 1 `)
echo "URL = ${URL}"
car la sortie de STDOUT vient d'un seul coup (j'ai mis des sleep 0.5
dans le script distant)
ce qu'il me faudrait, c'est lire au fur et à mesure la sortie de :
/usr/bin/ssh ${SRV} "${RMT_RECETTE_TEE}"
envoyer ça vers deux commandes simultanément, ie. echo et grep
mon but, donc est de sortir au term la trentaine de lignes tout en plaçant la dernère dans une variable.
j'ai une première solution, qui ne me convient pas : STDOUT=`/usr/bin/ssh ${SRV} "${RMT_RECETTE_TEE}"` echo "STDOUT :n${STDOUT}" URL=(`echo ${STDOUT} | grep -A 1 "iMac's URL :" | tail -n 1 `) echo "URL = ${URL}"
car la sortie de STDOUT vient d'un seul coup (j'ai mis des sleep 0.5 dans le script distant)
ce qu'il me faudrait, c'est lire au fur et à mesure la sortie de : /usr/bin/ssh ${SRV} "${RMT_RECETTE_TEE}"
envoyer ça vers deux commandes simultanément, ie. echo et grep
donc sur deux fifos.
pehache
Le 26/01/12 22:51, Une Bévue a écrit :
je me connecte par ssh pour faire tourner un script qui sort une 30taine de lignes. je détecte par grep la dernière (la précédente contient "iMac's URL :") pour la mettre dans une variable "URL" que j'envoie en local sur un butineur.
pour l'instant, je fais ça : #!/usr/bin/zsh URL=(`/usr/bin/xclip -o`) SRV= RMT_HOME="/Users/yt" RMT_RECETTE="${RMT_HOME}/bin/recette"
je me connecte par ssh pour faire tourner un script qui sort une 30taine
de lignes.
je détecte par grep la dernière (la précédente contient "iMac's URL :")
pour la mettre dans une variable "URL" que j'envoie en local sur un
butineur.
pour l'instant, je fais ça :
#!/usr/bin/zsh
URL=(`/usr/bin/xclip -o`)
SRV=yt@iMac
RMT_HOME="/Users/yt"
RMT_RECETTE="${RMT_HOME}/bin/recette"
je me connecte par ssh pour faire tourner un script qui sort une 30taine de lignes. je détecte par grep la dernière (la précédente contient "iMac's URL :") pour la mettre dans une variable "URL" que j'envoie en local sur un butineur.
pour l'instant, je fais ça : #!/usr/bin/zsh URL=(`/usr/bin/xclip -o`) SRV= RMT_HOME="/Users/yt" RMT_RECETTE="${RMT_HOME}/bin/recette"
j'ai essayé avec un pipe nommé, ça ne marche pas tjs, il ne reçoit (lecture) pas toutes les lignes tout le temps...
Alain Montfranc
Après mûre réflexion, Une Bévue a écrit :
je me connecte par ssh pour faire tourner un script qui sort une 30taine de lignes. je détecte par grep la dernière (la précédente contient "iMac's URL :") pour la mettre dans une variable "URL" que j'envoie en local sur un butineur.
pour l'instant, je fais ça : #!/usr/bin/zsh URL=(`/usr/bin/xclip -o`) SRV= RMT_HOME="/Users/yt" RMT_RECETTE="${RMT_HOME}/bin/recette"
je me connecte par ssh pour faire tourner un script qui sort une 30taine de
lignes.
je détecte par grep la dernière (la précédente contient "iMac's URL :") pour
la mettre dans une variable "URL" que j'envoie en local sur un butineur.
pour l'instant, je fais ça :
#!/usr/bin/zsh
URL=(`/usr/bin/xclip -o`)
SRV=yt@iMac
RMT_HOME="/Users/yt"
RMT_RECETTE="${RMT_HOME}/bin/recette"
je me connecte par ssh pour faire tourner un script qui sort une 30taine de lignes. je détecte par grep la dernière (la précédente contient "iMac's URL :") pour la mettre dans une variable "URL" que j'envoie en local sur un butineur.
pour l'instant, je fais ça : #!/usr/bin/zsh URL=(`/usr/bin/xclip -o`) SRV= RMT_HOME="/Users/yt" RMT_RECETTE="${RMT_HOME}/bin/recette"
[ Attention, ce message contient du zsh pas testé. ]
Une Bévue writes:
je me connecte par ssh pour faire tourner un script qui sort une 30taine de lignes. je détecte par grep la dernière (la précédente contient "iMac's URL :") pour la mettre dans une variable "URL" que j'envoie en local sur un butineur.
C'est vraiment forcément la dernière ? Si c'est le cas :
ssh tacommande | while read l do # C'est bourrin mais ça donne le bon résultat au final. URL="$l" echo "$l" done tonbutineur "$URL"
Si ce n'est pas forcément la dernière :
nextline=0 ssh tacommande | while read l do # C'est moins bourrin mais c'est plus lent. [[ $nextline -eq 1 ]] && { nextline=0 ; URL="$l" } echo "$l" | fgrep -q 'iMac.s URL' && nextline=1 echo "$l" done tonbutineur "$URL"
-- Arnaud http://blogs.glou.org/arnaud/
[ Attention, ce message contient du zsh pas testé. ]
Une Bévue <unbewusstsein@fai.invalid> writes:
je me connecte par ssh pour faire tourner un script qui sort une
30taine de lignes.
je détecte par grep la dernière (la précédente contient "iMac's URL
:") pour la mettre dans une variable "URL" que j'envoie en local sur
un butineur.
C'est vraiment forcément la dernière ? Si c'est le cas :
ssh tonlogin@tamachine tacommande | while read l
do
# C'est bourrin mais ça donne le bon résultat au final.
URL="$l"
echo "$l"
done
tonbutineur "$URL"
Si ce n'est pas forcément la dernière :
nextline=0
ssh tonlogin@tamachine tacommande | while read l
do
# C'est moins bourrin mais c'est plus lent.
[[ $nextline -eq 1 ]] && { nextline=0 ; URL="$l" }
echo "$l" | fgrep -q 'iMac.s URL' && nextline=1
echo "$l"
done
tonbutineur "$URL"
[ Attention, ce message contient du zsh pas testé. ]
Une Bévue writes:
je me connecte par ssh pour faire tourner un script qui sort une 30taine de lignes. je détecte par grep la dernière (la précédente contient "iMac's URL :") pour la mettre dans une variable "URL" que j'envoie en local sur un butineur.
C'est vraiment forcément la dernière ? Si c'est le cas :
ssh tacommande | while read l do # C'est bourrin mais ça donne le bon résultat au final. URL="$l" echo "$l" done tonbutineur "$URL"
Si ce n'est pas forcément la dernière :
nextline=0 ssh tacommande | while read l do # C'est moins bourrin mais c'est plus lent. [[ $nextline -eq 1 ]] && { nextline=0 ; URL="$l" } echo "$l" | fgrep -q 'iMac.s URL' && nextline=1 echo "$l" done tonbutineur "$URL"
-- Arnaud http://blogs.glou.org/arnaud/
Une Bévue
Le 27/01/2012 21:39, Arnaud Gomes-do-Vale a écrit :
C'est vraiment forcément la dernière ?
oui, oui, c'est moi qui ai écrit le script distant...
Si c'est le cas :
ssh tacommande | while read l do # C'est bourrin mais ça donne le bon résultat au final. URL="$l" echo "$l" done tonbutineur "$URL"
joli !
merci !
Le 27/01/2012 21:39, Arnaud Gomes-do-Vale a écrit :
C'est vraiment forcément la dernière ?
oui, oui, c'est moi qui ai écrit le script distant...
Si c'est le cas :
ssh tonlogin@tamachine tacommande | while read l
do
# C'est bourrin mais ça donne le bon résultat au final.
URL="$l"
echo "$l"
done
tonbutineur "$URL"
nextline=0 ssh tacommande | while read l do # C'est moins bourrin mais c'est plus lent. [[ $nextline -eq 1 ]]&& { nextline=0 ; URL="$l" } echo "$l" | fgrep -q 'iMac.s URL'&& nextline=1 echo "$l" done tonbutineur "$URL"
nextline=0
ssh tonlogin@tamachine tacommande | while read l
do
# C'est moins bourrin mais c'est plus lent.
[[ $nextline -eq 1 ]]&& { nextline=0 ; URL="$l" }
echo "$l" | fgrep -q 'iMac.s URL'&& nextline=1
echo "$l"
done
tonbutineur "$URL"
URL=
while read l; do
URL=$l
...
done << EOF
$(ssh ...)
EOF
echo $URL
=> ok
sous bash, => vide
Cordialement,
Cyrille Lefevre.
--
mailto:Cyrille.Lefevre-news%nospam@laposte.net.invalid
supprimer "%nospam% et ".invalid" pour me repondre.
remove "%nospam" and ".invalid" to answer me.
nextline=0 ssh tacommande | while read l do # C'est moins bourrin mais c'est plus lent. [[ $nextline -eq 1 ]]&& { nextline=0 ; URL="$l" } echo "$l" | fgrep -q 'iMac.s URL'&& nextline=1 echo "$l" done tonbutineur "$URL"
URL= while read l; do URL=$l ... done << EOF $(ssh ...) EOF echo $URL => ok
sous bash, => vide
Cordialement,
Cyrille Lefevre. -- mailto:Cyrille.Lefevre-news% supprimer "%nospam% et ".invalid" pour me repondre. remove "%nospam" and ".invalid" to answer me.
unbewusst.sein
Cyrille Lefevre <cyrille.lefevre-news% wrote:
attention à la construction ci-dessus qui ne fonctionne pas sur tous les shells (ok en ks, ko sous bash par ex., à moins qu'ils n'aient virés leur cuti !) dans le sens ou la partie droite est lancé dans un sous-shell, auquel cas, $URL n'est pas renseigné à la sortie du done.
j'utilise zsh
alternative :
URL > while read l; do URL=$l ... done << EOF $(ssh ...) EOF echo $URL => ok
sous bash, => vide
ok, merci bien.`
-- « Le vrai problème avec les menteurs est que l'on ne peut jamais être certain qu'ils ne vont pas dire la vérité. » (Kingsley Amis)
attention à la construction ci-dessus qui ne fonctionne pas sur tous les
shells (ok en ks, ko sous bash par ex., à moins qu'ils n'aient virés
leur cuti !) dans le sens ou la partie droite est lancé dans un
sous-shell, auquel cas, $URL n'est pas renseigné à la sortie du done.
j'utilise zsh
alternative :
URL > while read l; do
URL=$l
...
done << EOF
$(ssh ...)
EOF
echo $URL
=> ok
sous bash, => vide
ok, merci bien.`
--
« Le vrai problème avec les menteurs est que l'on ne peut jamais
être certain qu'ils ne vont pas dire la vérité. »
(Kingsley Amis)
attention à la construction ci-dessus qui ne fonctionne pas sur tous les shells (ok en ks, ko sous bash par ex., à moins qu'ils n'aient virés leur cuti !) dans le sens ou la partie droite est lancé dans un sous-shell, auquel cas, $URL n'est pas renseigné à la sortie du done.
j'utilise zsh
alternative :
URL > while read l; do URL=$l ... done << EOF $(ssh ...) EOF echo $URL => ok
sous bash, => vide
ok, merci bien.`
-- « Le vrai problème avec les menteurs est que l'on ne peut jamais être certain qu'ils ne vont pas dire la vérité. » (Kingsley Amis)