savoir si un script est lancé sous ssh

Le
unbewusst.sein
j'ai un script que j'utilise quelquefois par ssh quand je ne suis pas
devant mon iMac.
est-ce que, depuis ce script, il y a moyen de savoir s'il a été lancé de
manière disatnte, par ssh ???

--
« Les femmes ont raison de se rebeller contre les lois parce que
nous les avons faites sans elles. »
(Michel de Montaigne)
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
patpro ~ Patrick Proniewski
Le #23516871
In article (Une Bévue) wrote:

j'ai un script que j'utilise quelquefois par ssh quand je ne suis pas
devant mon iMac.
est-ce que, depuis ce script, il y a moyen de savoir s'il a été lancé de
manière disatnte, par ssh ???



quand tu te connectes en SSH, des variables d'environnement sont créées
qui s'appellent SSH_* et qui indiquent différentes choses :

$ env | grep SSH
SSH_CLIENT9.84.xxx.xxx 57130 22
SSH_TTY=/dev/ttyp0
SSH_CONNECTION9.84.xxx.xxx 57130 159.84.xxx.xxx 22

Ces variables n'existent pas si tu n'es pas connecté via SSH dans le
terminal courant.
Tu peux donc te servir d'une de ces trois variable pour déterminer si tu
es dans une session ouverte via SSH.

patpro

--
Je cherche à changer d'air -> http://www.patpro.net/cv
unbewusst.sein
Le #23517451
patpro ~ Patrick Proniewski
quand tu te connectes en SSH, des variables d'environnement sont créées
qui s'appellent SSH_* et qui indiquent différentes choses :

$ env | grep SSH
SSH_CLIENT9.84.xxx.xxx 57130 22
SSH_TTY=/dev/ttyp0
SSH_CONNECTION9.84.xxx.xxx 57130 159.84.xxx.xxx 22

Ces variables n'existent pas si tu n'es pas connecté via SSH dans le
terminal courant.
Tu peux donc te servir d'une de ces trois variable pour déterminer si tu
es dans une session ouverte via SSH.



OK, pigé, merci beaucoup !!!

--
« Les femmes ont raison de se rebeller contre les lois parce que
nous les avons faites sans elles. »
(Michel de Montaigne)
YBM
Le #23517561
Une Bévue a écrit :
j'ai un script que j'utilise quelquefois par ssh quand je ne suis pas
devant mon iMac.
est-ce que, depuis ce script, il y a moyen de savoir s'il a été lancé de
manière disatnte, par ssh ???



Je n'ai pas de Mac OS X sous la main, mais ceci fonctionne avec le ps
de GNU :

#!/bin/sh

if [ "$(ps -p $PPID -o comm=)" = "sshd" ]
then
echo ssh
else
echo pas ssh
fi

J'imagine que MacOS X est livré avec le ps BSD, pas sûr que ça
passe, mais le principe est adaptable (vérifier que le processus
parent a comme nom sshd), le ps de GNU est peut-être planqué dans
un coin de l'arborescence sinon...
unbewusst.sein
Le #23518151
YBM
#!/bin/sh

if [ "$(ps -p $PPID -o comm=)" = "sshd" ]
then
echo ssh
else
echo pas ssh
fi




bon, j'essaie ca au term.
déjà je dois remplacer le 'comm' par command :
iBook:~/bin yt$ ps -p $PPID -o command
login -pf yt


ca c'est la réponse en "local" en distant j'obtiens ;
imyt-2-% ps -p $PPID -o command /usr/sbin/sshd -i

donc reste plus qu'à comparer...

je suppose; intuitivement que je dois écrire qqc comme :
if [ "$(ps -p $PPID -o command=)" = "/usr/sbin/sshd -i" ]
meme blahblah
?
unbewusst.sein
Le #23518411
YBM
Je n'ai pas de Mac OS X sous la main, mais ceci fonctionne avec le ps
de GNU :

#!/bin/sh

if [ "$(ps -p $PPID -o comm=)" = "sshd" ]
then
echo ssh
else
echo pas ssh
fi




bon; je trouve que ce script ne marche pas, pour deux raisons ;

la premiere est que; dans ce script, la réponse à ps -p $PPID -o
command=
est tout simplement :
-bash
car on est dans un script bash; ensuite il faut "chomper" le résultat
car en réalité on a la string "n-bash"

ce qui marche chez moi; en distant sur mac os x 10.3.9 :

iBook:~/bin yt$ cat bash_test
#!/bin/sh

truc=`ps -p $PPID -o command=`
truc=`echo $truc`

if [ $truc = "-bash" ]
then
echo "Je suis lance par bash"
else
echo "Je NE suis PAS lance par bash"
fi


la ligne "truc=`echo $truc`" servant à "chomper" le résultat de la
commande

donc question; comment savoir qui a lancé ce script login ou sshd ???

c'est juste pour ma comprenotte vu que le truc donné par Patrick marche
tres bien et est facilement adaptable à ruby, mon scrptage préféré...
TK
Le #23518461
Le 30/06/11 09:56, Une Bévue a écrit :

j'ai un script que j'utilise quelquefois par ssh quand je ne suis pas
devant mon iMac.
est-ce que, depuis ce script, il y a moyen de savoir s'il a été lancé de
manière disatnte, par ssh ???




Un if [ "$SSH_CONNECTION" ] ... devrait faire l'affaire si le script en
question est en *sh.
YBM
Le #23518641
Une Bévue a écrit :
YBM
Je n'ai pas de Mac OS X sous la main, mais ceci fonctionne avec le ps
de GNU :

#!/bin/sh

if [ "$(ps -p $PPID -o comm=)" = "sshd" ]
then
echo ssh
else
echo pas ssh
fi




bon; je trouve que ce script ne marche pas, pour deux raisons ;

la premiere est que; dans ce script, la réponse à ps -p $PPID -o
command=
est tout simplement :
-bash



ça c'est curieux... très curieux même. Bash n'est pas le nom du
processus parent du script, mais le processus du script lui-même.

à moins qu'il ne soit lancé par un autre script.

bref si les variables d'environnements SSH* font le boulot, c'est
suffisant.
unbewusst.sein
Le #23519581
TK
Un if [ "$SSH_CONNECTION" ] ... devrait faire l'affaire si le script en
question est en *sh.



Oui; merci, c'est ce que j'ai finalement adopté, en ruby :

if ENV["SSH_CONNECTION'].nil?
Publicité
Poster une réponse
Anonyme