Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 15/11/2013, à 14:37

hedward

[RESOLU]Récupérer un numéro de process

Bonjour,

Je souhaite faire qqch d'assez simple, mais mes connaissances en shell étant limitée, je n'y arrive pas.
Je cherche à établir une connexion à un serveur mysql en utilisant un tunnel SSH. J'ai donc deux commandes à taper :
Pour me simplifier la vie, j'ai fais un script qui contient les lignes suivantes :

#!/bin/sh
ssh -i /home/xxx/.ssh/id_dsa.pub -L 33060:mysql.distant:3306 loginssh@serveur.ssh -N & 
sleep 2
mysql  -u logmysql  -P33060 -h 127.0.0.1 -D BDD -pXXXXX

Ce qui fonctionne correctement.
Par contre lorsque la connexion mysql se termine j'aimerai fermer le tunnel ssh. Or pour faire cela le seul moyen que j'ai trouvé c'est de faire un kill sur le process correspondant à cette connexion. Pour cela je fais un ps ax | grep ssh, je regarde le numéro et enfin je fais un kill -9 nnnn.

Ce que je voudrais c'est donc pouvoir récupérer le numéro de process correspondant au tunnel ssh et appeler le kill avec ce process à la fin de mon script.
La je ne vois pas du tout comment faire, mais j'ai le sentiment que c'est réalisable.
Mon sauveur se trouve t'il parmi vous ??? wink

Merci d'avance

Dernière modification par hedward (Le 15/11/2013, à 15:19)

Hors ligne

#2 Le 15/11/2013, à 14:41

serged

Re : [RESOLU]Récupérer un numéro de process

Et un :

killall ssh

ou un:

pkill ssh

Ne résoudraient pas ton problème ?


LinuxMint Vera Cinnamon et d'autres machines en MATE, XFCE... 20.x , 21.x ou 19.x
Tour : Asus F2A55 / AMD A8-5600K APU 3,6GHz / RAM 16Go / Nvidia GeForce GT610 / LM21.1 Cinnamon
Portable : LDLC Mercure MH : Celeron N3450 /RAM 4Go / Intel HD graphics 500 i915 / biboot Win 10 (sur SSD) - LM21.1 MATE (sur HDD)

Hors ligne

#3 Le 15/11/2013, à 14:55

hedward

Re : [RESOLU]Récupérer un numéro de process

Merci pour la réponse.

Cependant j'aimerai faire mieux.
En fait, à terme je vais avoir plusieurs scripts qui vont s'exécuter sur des bases différentes et donc avec des connexion ssh différentes. Donc je ne veux pas terminer tous les process ssh mais seulement celui qui vient de terminer sa connexion mysql.

Hors ligne

#4 Le 15/11/2013, à 15:03

Postmortem

Re : [RESOLU]Récupérer un numéro de process

Salut,

#!/bin/bash
ssh -i /home/xxx/.ssh/id_dsa.pub -L 33060:mysql.distant:3306 loginssh@serveur.ssh -N & 
process_ssh=$!
sleep 2
mysql  -u logmysql  -P33060 -h 127.0.0.1 -D BDD -pXXXXX
kill $process_ssh

Mot' a dit : « Un Hellfest sans Slayer, c'est comme une galette-saucisse sans saucisse ! »

Hors ligne

#5 Le 15/11/2013, à 15:15

maxire

Re : [RESOLU]Récupérer un numéro de process

Salut,

une solution :

ssh -i /home/xxx/.ssh/id_dsa.pub -L 33060:mysql.distant:3306 loginssh@serveur.ssh -N & pid=$! 

La variable pid 'appelle la comme tu veux', contient alors le process id de la commande que tu viens de lancer.
Tu peux alors faire kill -15 $pid.

[Edit] grillé par postmortem !

Dernière modification par maxire (Le 15/11/2013, à 15:16)


Maxire
Archlinux/Mate + Ubuntu 22.04 + Archlinux/Gnome sur poste de travail

Hors ligne

#6 Le 15/11/2013, à 15:18

hedward

Re : [RESOLU]Récupérer un numéro de process

super merci à vous deux, c'est exactement ce qu'il me fallait!!

Hors ligne