IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Shell et commandes GNU Discussion :

Lancer une application graphique selon une condition


Sujet :

Shell et commandes GNU

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    707
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 707
    Points : 777
    Points
    777
    Par défaut Lancer une application graphique selon une condition
    Bonjour,

    Je voudrais lancer Virtualbox simplement en cliquant sur son icône (sous KDE/Plasma - ArcoLinux), *MAIS* seulement si mon disque externe en USB, contenant les fichiers des machines virtuelles à utiliser, est bien connecté et monté. Si ce disque n'est pas connecté/monté, j'aimerais avoir un message expliquant qu'il faut déjà le brancher...
    Je n'y connais rien-de-rien au niveau des scripts sous Linux, alors si quelqu'un peut me donner les premières idées, je prends

    Merci.

  2. #2
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 549
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 549
    Points : 19 376
    Points
    19 376
    Par défaut
    Bonjour,

    regarde ce que tu peux faire avec findmnt.
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  3. #3
    Membre régulier Avatar de copyleft28
    Homme Profil pro
    Lycéen
    Inscrit en
    Février 2020
    Messages
    65
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Février 2020
    Messages : 65
    Points : 75
    Points
    75
    Par défaut
    Pour vérifier que ton disque est monté, tu peux taper
    et tu remplace sdb par la lettre correspondante à ton disque. Ca ne va rien renvoyer si ton disque n'est pas monté et ca va renvoyer une ligne si il est monté.
    Après, tu peux écrire un script en bash avec une simple instruction if else pour lancer ou pas Virtualbox. pour afficher un message dans la GUI il y a zenity :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    zenity --info --text="Branchez le disque !"

  4. #4
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 549
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 549
    Points : 19 376
    Points
    19 376
    Par défaut
    il faudrait que le système mette toujours le même disque au même endroit (sdb), ce qui n'est pas le cas : il suffit de brancher une clé USB avant le disque pour qu'il y ait un décalage.
    le mieux serait de donner un nom (label) aux/à la partition(s) pour pérenniser son/leur identification :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $ findmnt -S LABEL="$label"
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  5. #5
    Membre régulier Avatar de copyleft28
    Homme Profil pro
    Lycéen
    Inscrit en
    Février 2020
    Messages
    65
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Février 2020
    Messages : 65
    Points : 75
    Points
    75
    Par défaut
    si ça peut t'aider, voici un script qui permet de démarrer Virtualbox si un disque sdb est branché :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    #!/bin/bash
    findmnt | grep sdb > temp #remplacer par la lettre correspondante au disque
    if [ $(stat --printf="%s" temp) = "0" ]; then
    	zenity --info --text="Branchez le disque !"
    else
    	echo "démarrage de Virtualbox..." #remplacer par l'instruction permettant de démarrer Virtualbox
    fi
    Edit : Vous avez raison, nbah ; le script précédent peut toujours servir si tu n'utilise pas d'autre clé usb. Sinon, il faut le modifier un peu, voire le réécrire.

  6. #6
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 549
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 549
    Points : 19 376
    Points
    19 376
    Par défaut
    je le redis : chercher un disque d'après son emplacement sur le système est une mauvaise pratique.
    que dire de l'emploi d'un fichier temporaire !?
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  7. #7
    Membre régulier Avatar de copyleft28
    Homme Profil pro
    Lycéen
    Inscrit en
    Février 2020
    Messages
    65
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Février 2020
    Messages : 65
    Points : 75
    Points
    75
    Par défaut
    OK, je pense que ce script est mieux :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    #!/bin/bash
    findmnt | grep label > temp #remplacer label par le label correspondant au disque
    if [ $(stat --printf="%s" temp) = "0" ]; then
    	zenity --info --text="Branchez le disque !"
    else
    	echo "démarrage de Virtualbox..." #remplacer par l'instruction permettant de démarrer Virtualbox
    fi
    rm temp

  8. #8
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 549
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 549
    Points : 19 376
    Points
    19 376
    Par défaut

    comme je l'ai montré le grep est superflu :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    findmnt LABEL=labelConnu &>/dev/null && echo "Go : Zenity..." || echo "noGo : VirtualBox..."
    c'est à peu près tout.
    s'il y a plus que ça à faire, il faut mettre dans une forme if...; then..; else...; fi
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  9. #9
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    707
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 707
    Points : 777
    Points
    777
    Par défaut
    Merci à tous les deux ! Je ne pensais pas avoir une réponse aussi rapidement, j'espérais à peine avoir une pseudo-réponse seulement après plusieurs jours :-p
    Mais vous m'avez donné une solution qui fonctionne, dès les premiers quarts-d'heure !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. ouvrir X, et lancer une application sans environnement graphique
    Par drinkmilk dans le forum Administration système
    Réponses: 4
    Dernier message: 15/04/2007, 11h51
  2. Impossible de lancer une application graphique
    Par Arnaud F. dans le forum Debian
    Réponses: 3
    Dernier message: 28/11/2006, 11h58
  3. Réponses: 2
    Dernier message: 02/11/2006, 04h16
  4. [Eclipse 3.1] Impossible de lancer une application graphique
    Par pugnator dans le forum Eclipse Java
    Réponses: 10
    Dernier message: 11/09/2005, 12h48
  5. [Service] Lancer une application graphique
    Par Wookai dans le forum Windows
    Réponses: 3
    Dernier message: 18/08/2005, 12h26

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo