Ouvrir un terminal et executer automatiquement une commande a l'intérieur

xunil2003 Messages postés 766 Date d'inscription   Statut Membre Dernière intervention   -  
mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour,

Je suis sur python 2.7.17

Avec un combobox j'ai besoin de sélectionner une console pour les divers version de Linux (XFCE, kde, gnome, etc) , et d'exécuter a l’intérieur une commande.

def ssh(MDP, USER_MACHINE, IP_MACHINE, PORT_MACHINE):
    PROG0 = "konsole "
    PROG = "ssh "
    CMD_SSH = PROG+" "+USER_MACHINE+"@"+IP_MACHINE+" -p "+PORT_MACHINE+" &" 
    cmd = PROG0+" "+CMD_SSH
    print cmd
    os.system(cmd)
    liste_parametres_fenetre_connexion[6].destroy()
    
def sshpass(MDP, USER_MACHINE, IP_MACHINE, PORT_MACHINE):
    PROG0 = "konsole "
    PROG1 = "sshpass"
    PROG2 = "ssh"
    cmd = PROG0+PROG1+" -p '"+MDP+"' "+PROG2+" "+USER_MACHINE+"@"+IP_MACHINE+" -p "+PORT_MACHINE+"&"
    print cmd
    os.system(cmd)
    liste_parametres_fenetre_connexion[6].destroy()


Ceci ne fonctionne pas car un terminal s'ouvre mais n'execute pas la ligne de commande ?
Merci d'avance pour vos avis et conseils.
Configuration: Linux / Firefox 94.0

1 réponse

  1. mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   7 944
     
    Bonjour,

    C'est normal, la plupart des terminaux (dont
    konsole
    ) ne proposent pas de paramètres permettant de passer en paramètre une commande à exécuter.

    Il faudrait utiliser quelque chose comme
    pyautogui
    pour sélectionner la fenêtre de terminal adéquate et émuler une saisie au clavier.

    Ceci dit, généralement on procède plutôt dans l'autre sens :
    • soit l'utilisateur veut utiliser un terminal spécifique, et il tape la commande dans son terminal, quitte à configurer un alias dans son
      ~/.bashrc
      ;
    • soit on a besoin, dans un programme donné, d'établir une connexion ssh, mais dans ce cas il n'y a aucune raison d'ouvrir un terminal (il suffit de lancer la commande ssh avec
      subprocess.Popen
      , ou bien plus pratique, d'utiliser
      paramiko
      ).


    Bonne chance
    0