Boucle et récupération de PID [Résolu]

Signaler
Messages postés
13157
Date d'inscription
lundi 2 mars 2009
Statut
Contributeur
Dernière intervention
15 janvier 2021
-
Messages postés
36247
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
16 janvier 2021
-
Bonjour,

J'aurais besoin d'un script /bin/sh qui boucle sur tous les résultats de cette commande :
netstat -npt4 | grep ":22 " | grep "sshd: vnc"


Voilà la sortie de la commande (plusieurs lignes possibles) :
tcp 0 0 163.172.215.130:22 85.95.215.11:51062 ESTABLISHED 19901/sshd: vnc


J'aurais besoin de récupérer le PID, en l'occurrence 19901 puis tuer le processus comme ceci :
kill -9 19901


Merci beaucoup pour votre aide.

Configuration: Windows / Firefox 83.0



“L'intelligence artificielle se définit comme le contraire de la bêtise naturelle.”

1 réponse

Messages postés
13157
Date d'inscription
lundi 2 mars 2009
Statut
Contributeur
Dernière intervention
15 janvier 2021
4 041
J'ai réussi à faire ça :

#! /bin/bash

arretTunnels(){
        echo 1 fois
        for pid in $( netstat -npt4 | grep ":22 " | grep "sshd: vnc" | cut -f2 -dD | cut -f1 -d/ | tr -d ' ' )
        do

                kill -9 $pid && echo arret pid OK

        done
}

while [ $x -eq 1 ]
do
        arretTunnels
        sleep 5
        netstat -npt4 | grep ":22 " | grep "sshd: vnc" && x="1" || x="0"
done

echo on quitte


Mais j'ai une erreur de syntaxe au niveau de la condition de la boucle while [ $x -eq 1 ]
line 13: [: -eq: unary operator expected


Messages postés
13157
Date d'inscription
lundi 2 mars 2009
Statut
Contributeur
Dernière intervention
15 janvier 2021
4 041 >
Messages postés
36247
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
16 janvier 2021

Merci mais ce n'est pas encore ça, j'ai une nouvelle erreur :
line 13: [: : integer expression expected


Je précise que je suis sur Debian 8.
Messages postés
36247
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
16 janvier 2021
5 829 >
Messages postés
13157
Date d'inscription
lundi 2 mars 2009
Statut
Contributeur
Dernière intervention
15 janvier 2021

Alors c'est parce ta variable est vide et qu'il te faut la déclarer avant (x=1).

Sinon, plutôt que de t'embêter avec un script et des boucles, jette un œil à la commande
pkill
.
Messages postés
13157
Date d'inscription
lundi 2 mars 2009
Statut
Contributeur
Dernière intervention
15 janvier 2021
4 041 >
Messages postés
36247
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
16 janvier 2021

Bien vu, pkill va me faciliter la tâche :
pkill -u vnc sshd
Messages postés
13157
Date d'inscription
lundi 2 mars 2009
Statut
Contributeur
Dernière intervention
15 janvier 2021
4 041 >
Messages postés
13157
Date d'inscription
lundi 2 mars 2009
Statut
Contributeur
Dernière intervention
15 janvier 2021

J'ai fait quelques tests, tout fonctionne comme attendu.
Je passe le sujet en "résolu"

Merci zipe31 ;-)
Messages postés
36247
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
16 janvier 2021
5 829 >
Messages postés
13157
Date d'inscription
lundi 2 mars 2009
Statut
Contributeur
Dernière intervention
15 janvier 2021

De rien ;-)