Boucle et récupération de PID

Résolu
barnabe0057 Messages postés 14454 Date d'inscription   Statut Contributeur Dernière intervention   -  
zipe31 Messages postés 36402 Date d'inscription   Statut Contributeur Dernière intervention   -
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   Statut Contributeur Dernière intervention   4 925
 
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   Statut Contributeur Dernière intervention   6 427
 
Salut,

Il te faut quoter ta variable ;-(

while [ "$x" -eq 1 ]
0
barnabe0057 Messages postés 14454 Date d'inscription   Statut Contributeur Dernière intervention   4 925 > zipe31 Messages postés 36402 Date d'inscription   Statut Contributeur Dernière intervention  
 
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   Statut Contributeur Dernière intervention   6 427 > barnabe0057 Messages postés 14454 Date d'inscription   Statut Contributeur Dernière intervention  
 
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   Statut Contributeur Dernière intervention   4 925 > zipe31 Messages postés 36402 Date d'inscription   Statut Contributeur Dernière intervention  
 
Bien vu, pkill va me faciliter la tâche :
pkill -u vnc sshd
0
barnabe0057 Messages postés 14454 Date d'inscription   Statut Contributeur Dernière intervention   4 925 > barnabe0057 Messages postés 14454 Date d'inscription   Statut Contributeur Dernière intervention  
 
J'ai fait quelques tests, tout fonctionne comme attendu.
Je passe le sujet en "résolu"

Merci zipe31 ;-)
0