Partage
  • Partager sur Facebook
  • Partager sur Twitter

choix aleatoire dans un fichier ( résolut )

shell bash

    14 novembre 2019 à 12:52:08

    Bonjour à vous, étant novice j'aurais besoin de vos lumières s'il vous plait.

    J'ai une commande que j'ai réussi à bidouiller à l'aide de plusieurs tutos, elle fonctionne bien quand je l'execute dans le terminal.

    cd /etc/openvpn/ovpn_udp && sudo openvpn $(ls -d * | tail -$(($RANDOM % `ls -d * | wc -l`)) | head -1)

    cette commande à pour but de me connecter à un server vpn choisi aléatoirement dans un dossier.

    J'etais heureux et fier d'y etre parvenu et j'ai voulu l'ajouter à mon shell ( qui lui me permet de choisir un vpn spécifique, 1=france 2=japon 3=onion etc... )

    à cela j'ai voulu ajouter ma commande ci dessus dans le shell.

    sauf que ça ne doit pas etre le meme langage et du coup ça ne fonctionne pas. mais toujours aucun probleme pour me connecter aux autres vpn via ce shell.

    j'ai essayé de façon logique venant d'un novice de tourner la commande d'une façon differente, hum que dis-je, une centaine ! Mais je m'égare au milieu de tout ça, je ne sais plus ou chercher.

    si vous pouviez m'économiser 4 mois de recherche. je vous remercie. A bientot.

    Voici ou j'en suis:

    voila ou j'en suis:

    #!/bin/sh

    #connection à nordvpn
    cd '/etc/openvpn/ovpn_udp'
    echo "nordvpn connexion via openvpn"

    selection=until [*selection* = *0*]: do
    echo ""
    echo "selectionnez votre server"
    echo ""
    echo "standard VPN"
    echo "*1 - france"
    echo "*2 - etat unis"
    echo "*3 - espagne"
    echo "*4 - allemagne"
    echo "*5 - hollande"
    echo "*6 - ukraine"
    echo ""
    echo "double VPN"
    echo "*7 - hollande-ukaine"
    echo "*8 - hollande-serbie"
    echo ""
    echo "VPN onion"
    echo "*9 - onion1"
    echo "*10 - onion2"
    echo "*11 - onion3"
    echo ""
    echo "VPN aleatoire"
    echo "*12 - RANDOM"
    echo ""
    echo "*0 - exit"
    echo ""
    echo -n "entrer votre selection"
    read selection
    echo ""
    case $selection in
    1) sudo openvpn ********.nordvpn.com.udp.ovpn ;;
    2) sudo openvpn ******.nordvpn.com.udp.ovpn ;;
    3) sudo openvpn *****.nordvpn.com.udp.ovpn ;;
    4) sudo openvpn ******nordvpn.com.udp.ovpn ;;
    5) sudo openvpn ******.nordvpn.com.udp.ovpn ;;
    6) sudo openvpn **********.nordvpn.com.udp.ovpn ;;
    7) sudo openvpn ********.nordvpn.com.udp.ovpn ;;
    8) sudo openvpn *******.nordvpn.com.udp.ovpn ;;
    9) sudo openvpn -********.nordvpn.com.udp.ovpn ;;
    10) sudo openvpn ********.nordvpn.com.udp.ovpn ;;
    11) sudo openvpn *********nordvpn.com.udp.ovpn ;;
    12) sudo openvpn $(ls -d * | tail -$(($RANDOM % `ls -d * | wc -l`)) | head -1) ;;


    0) exit ;;

    esac
    done

    -
    Edité par Floriansurleau 14 novembre 2019 à 18:34:09

    • Partager sur Facebook
    • Partager sur Twitter
      14 novembre 2019 à 14:43:22

      salut,

      en bash*:

      dir=/etc/openvpn/opvpn_udp
      subDirs=( "$dir"/*/ )
      randDir="${subDirs[RANDOM%(${#subDirs[*]}-1)]//$dir\//}"

      --
      * il faut adapter le shebang !

      • Partager sur Facebook
      • Partager sur Twitter

      Validez la réponse utile « Un problème clairement exposé est à moitié résolu. » Pas de MP technique

        14 novembre 2019 à 18:32:26

        merci à toi, je pense que je vais tenter d'apprendre le mandarin ça ira aussi vite.

        j'ai absolument rien compris à comment et ou faire ça.

        mais toutefois, en modifiant juste le shebang du coup ça fonctionne bien.

        #!/bin/bash au lieu de #!bin/sh et mon RANDOM passe nickel.

        Merci d'avoir pris le temps de me répondre

        • Partager sur Facebook
        • Partager sur Twitter
          14 novembre 2019 à 19:13:40

          je détaille, parce que je sens que je suis peut-être allé un peuvite :
          dir="/etc/openvpn/opvpn_udp" # définition du répertoire de travail
          
          subDirs=( "$dir"/*/ ) # création d'un tableau/liste indexé ne contenant QUE les sous-répertoires directs
          
          maxIndex=$((${#subDirs[*]}-1)) # dernier indice du tableau/liste
          random=$(( RANDOM % $maxIndex )) # calcul d'un nombre aléatoire
          
          randDir="${subDirs[$random]}" # assignation du répertoire aléatoire
          randDir="${randDir//$dir\//}" # suppression du nom du répertoire de travail dans le nom du répertoire aléatoire. 
          • Partager sur Facebook
          • Partager sur Twitter

          Validez la réponse utile « Un problème clairement exposé est à moitié résolu. » Pas de MP technique

          choix aleatoire dans un fichier ( résolut )

          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
          • Editeur
          • Markdown