Boucle et récupération de PID

Résolu/Fermé
barnabe0057 Messages postés 14454 Date d'inscription lundi 2 mars 2009 Statut Contributeur Dernière intervention 30 novembre 2024 - Modifié le 25 nov. 2020 à 23:13
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 - 26 nov. 2020 à 17:52
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


1 réponse

barnabe0057 Messages postés 14454 Date d'inscription lundi 2 mars 2009 Statut Contributeur Dernière intervention 30 novembre 2024 4 918
26 nov. 2020 à 01:14
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


0
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 419
26 nov. 2020 à 07:25
Salut,

Il te faut quoter ta variable ;-(

while [ "$x" -eq 1 ]
0
barnabe0057 Messages postés 14454 Date d'inscription lundi 2 mars 2009 Statut Contributeur Dernière intervention 30 novembre 2024 4 918 > zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021
26 nov. 2020 à 15:01
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.
0
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 419 > barnabe0057 Messages postés 14454 Date d'inscription lundi 2 mars 2009 Statut Contributeur Dernière intervention 30 novembre 2024
26 nov. 2020 à 16:35
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
.
0
barnabe0057 Messages postés 14454 Date d'inscription lundi 2 mars 2009 Statut Contributeur Dernière intervention 30 novembre 2024 4 918 > zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021
26 nov. 2020 à 17:05
Bien vu, pkill va me faciliter la tâche :
pkill -u vnc sshd
0
barnabe0057 Messages postés 14454 Date d'inscription lundi 2 mars 2009 Statut Contributeur Dernière intervention 30 novembre 2024 4 918 > barnabe0057 Messages postés 14454 Date d'inscription lundi 2 mars 2009 Statut Contributeur Dernière intervention 30 novembre 2024
26 nov. 2020 à 17:47
J'ai fait quelques tests, tout fonctionne comme attendu.
Je passe le sujet en "résolu"

Merci zipe31 ;-)
0