Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

savoir si un script est lancé sous ssh

8 réponses
Avatar
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)

8 réponses

Avatar
patpro ~ Patrick Proniewski
In article <1k3o66t.1tds1d0128mqkgN%,
(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
Avatar
unbewusst.sein
patpro ~ Patrick Proniewski wrote:

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)
Avatar
YBM
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...
Avatar
unbewusst.sein
YBM wrote:

#!/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
?
Avatar
unbewusst.sein
YBM wrote:

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é...
Avatar
TK
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.
Avatar
YBM
Une Bévue a écrit :
YBM wrote:

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.
Avatar
unbewusst.sein
TK wrote:

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?