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

Fermé
xunil2003 Messages postés 766 Date d'inscription mercredi 17 novembre 2004 Statut Membre Dernière intervention 29 septembre 2024 - 10 nov. 2021 à 09:56
mamiemando Messages postés 33407 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 29 novembre 2024 - 10 nov. 2021 à 15:40
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
A voir également:

1 réponse

mamiemando Messages postés 33407 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 29 novembre 2024 7 806
Modifié le 10 nov. 2021 à 15:41
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