Aller au contenu

Lancement ssh distant


Messages recommandés

Bonjour,

j'aurais besoin de votre aide, s'il vous plait, concernant la commande ssh :

sous linux via un shell "testdav1.sh" , je lance la commande suivante :

ssh -l pandore alsace /pandore/serveur/specif/cirad/n/sh/testdav2.sh

Sur ma machine alsace, le shell testdav2.sh fait juste un sleep 50.

je me rends compte que lorsque je tue testdav1.sh, je me rends compte que testdav2.sh tourne toujours sur ma machine distante.

Comment faire pour qu'il se tue en même temps que le père ?

je vous remercie par avance,

David

Lien vers le commentaire
Partager sur d’autres sites

il faut que tu envoies une nouvelle commande via ssh, genre killall testdav2.sh

:transpi:

ok mais tout cela est doit géré dans mon batch. Cela veut dire par exemple que lorque mon serveur tombe la nuit, je veux que les processus fils lancés par ssh soit également killés automatiquement.

Lien vers le commentaire
Partager sur d’autres sites

et comment il s'arrête ton truc ?

mon processus père lance à distance son fils via ssh.

- donc dans un situation normale, le fils s'éxécute et se termine, puis le père se termine ( cf mon premier message pour le code )

- maintenant si je kill mon père ( je le kill pour simuler ( = tester ) un incident technique tel que le serveur qui tombe ), je me rends compte que le fils tourne toujours. Hors je voudrais que le fils se kill également .... en même temps que le père. Voilà mon souci ...

Lien vers le commentaire
Partager sur d’autres sites

mhmm, en fait, tu voudrais un connection permanente entre les deux processus...

j'ai une solution hyper bourrine : sur chacune des machine tu sotck le pid de ton process (/var/run), et tu fais un démon qui check chroniquement que ce processus existe sur l'autre machine (ssh ps $(cat /var/run/monpid) par exemple). si ps ne renvois rien alors il kill le processus local (kill -9 $(cat /var/run/monpid) par exemple)

mais tu n'auras pas la synchro exacte (tout dépend du rafraichissement du démon)

Lien vers le commentaire
Partager sur d’autres sites

mhmm, en fait, tu voudrais un connection permanente entre les deux processus...

j'ai une solution hyper bourrine : sur chacune des machine tu sotck le pid de ton process (/var/run), et tu fais un démon qui check chroniquement que ce processus existe sur l'autre machine (ssh ps $(cat /var/run/monpid) par exemple). si ps ne renvois rien alors il kill le processus local (kill -9 $(cat /var/run/monpid) par exemple)

mais tu n'auras pas la synchro exacte (tout dépend du rafraichissement du démon)

c'est en effet une solution, aussi bourrine soit elle, ca reste une solution ...

Bizarre qu'il n'y ait pas d'option avec le ssh ...

en tout cas merci pour ton aide

Lien vers le commentaire
Partager sur d’autres sites

le problème c'est que par défaut la connexion ssh est persistante sur le serveur (option TCPKeepAlive de ssh_config et sshd_config). Enfin en général c'est pratique : s'il y a une coupure momentanée de la connexion, la liaison ssh ne tombe pas. Dans ton cas ça ajoute de la latence. Mais tu peux placer cette option à 'no' et l'option ServerAliveInterval et ClientAliveInterval au nombre de secondes désirées (man ssh_config et man sshd_config).

Comme commandes il y a pgrep et pkill qui peuvent être utiles.

pgrep -f "sshd: pandore" # sur le serveur SSH

ou

pgrep -f "ssh -l pandore alsace /pandore/serveur/specif/cirad/n/sh/testdav2.sh" # sur le client SSH

pkill -f "sshd: pandore" # ...

édit: je vois ça dans le cadre d'un test sur le serveur SSH :

if ! pgrep -f "sshd: pandore"
then
pkill ma_commande
fi

Je me demande si l'option -O de ssh ne correspondrait pas à tes besoins

-O ctl_cmd

Control an active connection multiplexing master process. When the -O option is

specified, the ctl_cmd argument is interpreted and passed to the master process.

Valid commands are: ``check'' (check that the master process is running) and

``exit'' (request the master to exit).

Mais là c'est pas très clair :yes: ... à creuser.

Lien vers le commentaire
Partager sur d’autres sites

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×
×
  • Créer...