• [^] # Re: script pour openvpn dual VPN + SSH

    Posté par . En réponse au message script lancement openvpn. Évalué à 4.

    J’ai rien compris... Tu voudrais faire quoi en français ? Je ne comprends pas bien ce que tu veux faire. Pourquoi pkill -c (--count) ??

    Donc je ne sais pas si ça répond à ta question mais tu peux très bien utiliser une variable pour pgrep/pkill (comme pour n’importe quelle commande, puisque c’est le shell qui va « transformer » cette variable avant d’appeler la commande...), un exemple :

    (je prends uwsgi comme exemple car je n’ai pas d’openvpn qui tourne ici)

    Uswgi a plusieurs instances (qui correspondent chacune à une application dans mon cas) :

    # ps -afx |grep uwsgi
     8385 pts/0 S+ 0:00 \_ grep uwsgi
     7523 ? S 0:00 /usr/bin/uwsgi --ini /usr/share/uwsgi/conf/default.ini --ini /etc/uwsgi/apps-enabled/default.ini --daemonize /var/log/uwsgi/app/default.log
     7566 ? S 0:00 \_ /usr/bin/uwsgi --ini /usr/share/uwsgi/conf/default.ini --ini /etc/uwsgi/apps-enabled/default.ini --daemonize /var/log/uwsgi/app/default.log
     7567 ? S 0:00 \_ /usr/bin/uwsgi --ini /usr/share/uwsgi/conf/default.ini --ini /etc/uwsgi/apps-enabled/default.ini --daemonize /var/log/uwsgi/app/default.log
     7638 ? S 0:00 /usr/bin/uwsgi --ini /usr/share/uwsgi/conf/default.ini --ini /etc/uwsgi/apps-enabled/paab.ini --daemonize /var/log/uwsgi/app/paab.log
     7717 ? S 0:00 \_ /usr/bin/uwsgi --ini /usr/share/uwsgi/conf/default.ini --ini /etc/uwsgi/apps-enabled/paab.ini --daemonize /var/log/uwsgi/app/paab.log
     7718 ? S 0:00 \_ /usr/bin/uwsgi --ini /usr/share/uwsgi/conf/default.ini --ini /etc/uwsgi/apps-enabled/paab.ini --daemonize /var/log/uwsgi/app/paab.log
     7752 ? S 0:00 /usr/bin/uwsgi --ini /usr/share/uwsgi/conf/default.ini --ini /etc/uwsgi/apps-enabled/paab-ws.ini --daemonize /var/log/uwsgi/app/paab-ws.log
     7770 ? S 0:00 \_ /usr/bin/uwsgi --ini /usr/share/uwsgi/conf/default.ini --ini /etc/uwsgi/apps-enabled/paab-ws.ini --daemonize /var/log/uwsgi/app/paab-ws.log
     7772 ? S 0:00 \_ /usr/bin/uwsgi --ini /usr/share/uwsgi/conf/default.ini --ini /etc/uwsgi/apps-enabled/paab-ws.ini --daemonize /var/log/uwsgi/app/paab-ws.log
     7868 ? S 0:00 /usr/bin/uwsgi --ini /usr/share/uwsgi/conf/default.ini --ini /etc/uwsgi/apps-enabled/wst.ini --daemonize /var/log/uwsgi/app/wst.log
     7877 ? S 0:00 \_ /usr/bin/uwsgi --ini /usr/share/uwsgi/conf/default.ini --ini /etc/uwsgi/apps-enabled/wst.ini --daemonize /var/log/uwsgi/app/wst.log
     7878 ? S 0:00 \_ /usr/bin/uwsgi --ini /usr/share/uwsgi/conf/default.ini --ini /etc/uwsgi/apps-enabled/wst.ini --daemonize /var/log/uwsgi/app/wst.log
     7989 ? S 0:00 /usr/bin/uwsgi --ini /usr/share/uwsgi/conf/default.ini --ini /etc/uwsgi/apps-enabled/yab.ini --daemonize /var/log/uwsgi/app/yab.log
     8067 ? S 0:00 \_ /usr/bin/uwsgi --ini /usr/share/uwsgi/conf/default.ini --ini /etc/uwsgi/apps-enabled/yab.ini --daemonize /var/log/uwsgi/app/yab.log
     8068 ? S 0:00 \_ /usr/bin/uwsgi --ini /usr/share/uwsgi/conf/default.ini --ini /etc/uwsgi/apps-enabled/yab.ini --daemonize /var/log/uwsgi/app/yab.log
     8106 ? S 0:00 /usr/bin/uwsgi --ini /usr/share/uwsgi/conf/default.ini --ini /etc/uwsgi/apps-enabled/yab-prod.ini --daemonize /var/log/uwsgi/app/yab-prod.log
     8112 ? S 0:00 \_ /usr/bin/uwsgi --ini /usr/share/uwsgi/conf/default.ini --ini /etc/uwsgi/apps-enabled/yab-prod.ini --daemonize /var/log/uwsgi/app/yab-prod.log
     8113 ? S 0:00 \_ /usr/bin/uwsgi --ini /usr/share/uwsgi/conf/default.ini --ini /etc/uwsgi/apps-enabled/yab-prod.ini --daemonize /var/log/uwsgi/app/yab-prod.log
    

    Si je veux ne killer qu’une seule d’entre-elles je peux valoriser une variable (nommée toto) :

    # toto=yab.ini
    

    et l’utiliser dans mon pgrep/pkill

    # pgrep -f uwsgi.*$toto
    7989
    8067
    8068
    

    on peut voir que ça ne m’a sélectionné que les PID correspondant à l’instance qui a la chaîne "yab.ini" dans sa ligne de commande.

    Sinon, pour un if [ ... ], si tu veux utiliser un "AND" c’est -a :

    if [ -z "$plop" -a -n "$plip" ] signifie : Si $plop est une chaîne vide ET $plip une chaîne non-vide. Je t’invite à lire man test qui explique tout ça.