Contenu | Rechercher | Menus

Annonce

Si vous rencontrez des soucis à rester connecté sur le forum (ou si vous avez perdu votre mot de passe) déconnectez-vous et reconnectez-vous depuis cette page, en cochant la case "Me connecter automatiquement lors de mes prochaines visites".
Test de l'ISO d'Ubuntu francophone : nous avons besoin de testeurs pour la version francophone d'Ubuntu 14.04. Liens et informations ici.

#1 Le 15/11/2013, à 15: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, à 16:19)

Hors ligne

#2 Le 15/11/2013, à 15: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 ?


Linux-Mint Qiana 64 (Cinnamon) sur ASUS F2A55/AMD A8-5600K APU

Hors ligne

#3 Le 15/11/2013, à 15: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, à 16: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

Trusty Tahr (64 bits), Athlon64 3800+, ATI Radeon HD4870

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

Hors ligne

#5 Le 15/11/2013, à 16: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, à 16:16)


Maxire
Archlinux/Mate sur portable -- Archlinux/Mate sur poste de travail + Multiboot Wheezy/Gnome, Trusty/Xubuntu, Trusty/Unity, LFS

Hors ligne

#6 Le 15/11/2013, à 16: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

Haut de page ↑