j'ai ecri un petit script, pour exporter la variable DISPLAY
à chaque ssh:
#Declare automatique DISPLAY
CONS=$(tty | sed "s~/dev/~~g")
ATIP=$(who | grep $CONS | awk '{print $6}' | sed "s~(~~g" | sed "s~)~~g" | sed "s~::ffff:~~g" )
echo "DISPLAY=$ATIP:0"
export DISPLAY=$ATIP:0
unset CONS
unset ATIP
Je l'ai mise sur la machine distante, un solaris.
Quand, depuis ma machine locale je fais:
scp kowalsky@192.168.0.124:/etc/hosts /etc/hosts
j'ai un retour du type:
grep: can't open protocol error: bad mode
You have mail in /var/mail/root
[kowalsky@~/test]# a
grep: can't open tty
Et quand j'enleve .bashrc, je n'ai aucun probleme, j'en conclu
que scp lit .bashrc.
J'ai trouvé un autre moyen d'exporter la variable DISPLAY, grace
à la variable TERM, mais comment resoudre ce probleme sans tricher
avec la variable TERM...?
# re
Posté par gnu_thomas . Évalué à 4.
Dan ton .bash_profile met :
# include .bashrc if it exists
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
# utilise un if
Posté par Bastien Mourgues . Évalué à 1.
if tty -s
then
#Declare automatique DISPLAY
CONS=$(tty | sed "s~/dev/~~g")
ATIP=$(who | grep $CONS | awk '{print $6}' | sed "s~(~~g" | sed "s~)~~g" | sed "s~::ffff:~~g" )
echo "DISPLAY=$ATIP:0"
export DISPLAY=$ATIP:0
unset CONS
unset ATIP
fi
# Le problème...
Posté par Arthur Accroc . Évalué à 3.
echo "DISPLAY=$ATIP:0"
scp attend sur la sortie standard les infos de la commande scp distante, et il n'aime pas quand il y a un affichage imprévu...
J'ai eu le problème moi-même sur une machine qui avait un mot du jour (/etc/motd)...
Le if de Bastien Mourgues doit t'éviter cet affichage dans la foulée.
Sinon, on peut aussi tester sur le prompt, qui n'est normalement pas défini dans le cas d'un shell non interactif (c'est-à-dire sauf si tu l'as fait toi-même sans faire le test avant dans ton .bashrc ou autre).
[ -n "$PS1" ] && echo ...
« Le fascisme c’est la gangrène, à Santiago comme à Paris. » — Renaud, Hexagone
# au début de .bash_profile
Posté par RB . Évalué à 1.
# past this point for scp and rcp, and it's important to refrain from
# outputting anything in those cases.
if [[ $- != *i* ]]; then
# Shell is non-interactive. Be done now
return
fi
# Merci a tous...!
Posté par kowalsky . Évalué à 2.
la soluce de bastien marche pour l'instant, je vais tester plus en profondeur...
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.