Boucle et récupération de PID

Résolu
barnabe0057 Messages postés 14329 Date d'inscription   Statut Contributeur Dernière intervention   -  
zipe31 Messages postés 34620 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



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

1 réponse

  1. barnabe0057 Messages postés 14329 Date d'inscription   Statut Contributeur Dernière intervention   4 930
     
    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
    1. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501
       
      Salut,

      Il te faut quoter ta variable ;-(

      while [ "$x" -eq 1 ]
      0
    2. barnabe0057 Messages postés 14329 Date d'inscription   Statut Contributeur Dernière intervention   4 930 > zipe31 Messages postés 34620 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
    3. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501 > barnabe0057 Messages postés 14329 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
    4. barnabe0057 Messages postés 14329 Date d'inscription   Statut Contributeur Dernière intervention   4 930 > zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention  
       
      Bien vu, pkill va me faciliter la tâche :
      pkill -u vnc sshd
      0
    5. barnabe0057 Messages postés 14329 Date d'inscription   Statut Contributeur Dernière intervention   4 930 > barnabe0057 Messages postés 14329 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