Python, Paramiko : Savoir si la connexion à été établie

Résolu/Fermé
Jeanestamarre Messages postés 21 Date d'inscription dimanche 3 juillet 2022 Statut Membre Dernière intervention 4 décembre 2022 - 5 nov. 2022 à 20:40
Jeanestamarre Messages postés 21 Date d'inscription dimanche 3 juillet 2022 Statut Membre Dernière intervention 4 décembre 2022 - 8 nov. 2022 à 18:52

Bonjour,

J'utilise le module python paramiko pour pouvoir établir une connexion ssh

Est-ce possible de savoir si une connexion à été établi et renvoyer un message du genre "connexion établie" ?

Merci,

Bonne soirée.

6 réponses

yg_be Messages postés 22730 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 26 avril 2024 1 477
5 nov. 2022 à 21:17

bonjour,

peux-tu nous montrer comment tu utilises cela?  Tiens compte de https://codes-sources.commentcamarche.net/faq/11288-poster-un-extrait-de-code

0

Bonsoir, je ne connais pas ce module, mais si la méthode connect ne renvoie pas d'erreur, c'est que tout s'est normalement bien passé, si tu veux modifier légèrement ce que fait une fonction, méthode, classe, surcharge alors cette méthode connect, soit via un héritage de classe (plus propre sans doute), soit en gardant la référence de la méthode à modifier, la récrivant avec un appel de la référence.

L'héritage, c'est assez simple, la 2nde méthode se résume ainsi.

class Test:
    def plop(self):
        return 40

test_plop = Test.plop

def plop_plip(s):
    result = test_plop(s)
    return result + 2

Test.plop = plop_plip

t = Test()
print(t.plop())

C'est assez cracra ^^

https://docs.paramiko.org/en/stable/api/client.html#paramiko.client.SSHClient.connect

0
Jeanestamarre Messages postés 21 Date d'inscription dimanche 3 juillet 2022 Statut Membre Dernière intervention 4 décembre 2022
6 nov. 2022 à 11:52

Bonjour,

Voici mon code :

import paramiko

host = input("address ip :")
user = input("user :")
password = input(user +" password's :")

client = paramiko.client.SSHClient()
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
client.connect(host, username=user, password=password)
vrai = True
while vrai == True:
    commande = input(user + "@" + host + ":~$ ")
    _stdin, _stdout,_stderr = client.exec_command(commande)
    print(_stdout.read().decode())
    
client.close()
0
Jeanestamarre Messages postés 21 Date d'inscription dimanche 3 juillet 2022 Statut Membre Dernière intervention 4 décembre 2022
Modifié le 6 nov. 2022 à 13:07

Rebonjour,

Je viens de trouver la solution

Mon code :

import paramiko

host = input("address ip :")
user = input("user :")
password = input(user +" password's :")

client = paramiko.client.SSHClient()
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
client.connect(host, username=user, password=password)
vrai = True
while vrai == True:
    commande = input(user + "@" + host + ":~$ ")
    _stdin, _stdout,_stderr = client.exec_command(commande)
    print(_stdout.read().decode())
    print(_stderr.read().decode())

client.close()

Mais maintenant serait-il possible d'exécuter des commandes comme "su" et de renvoyer la réponse (par exemple pour su demander le mot de passe) ?

Merci

Bonne journée

0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
mamiemando Messages postés 33079 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 23 avril 2024 7 749
Modifié le 8 nov. 2022 à 17:31

Bonjour,

Pour demander la saisie d'un mot de passe en python tu devrais utiliser getpass.getpass.

Tu peux ensuite t'inspirer de ce dépôt.

import getpass
import paramiko

# Paste https://github.com/sirosen/paramiko-shell/blob/master/interactive_shell.py here

client = paramiko.client.SSHClient()
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
user = input("user? ")
host = input("host? ")
passwd = getpass.getpass(f"{user}@{host} password? ")
client.connect(host, username=user, password=passwd)
open_shell(client)

Tu peux effectivement passer root avec la commande su dans ce shell. Par contre il y a un peu de travail pour mettre en forme de stdin, stderr et stdout.

Pour quitter le su et la session ssh, appuie sur ctrl D.

Bonne chance

0
Jeanestamarre Messages postés 21 Date d'inscription dimanche 3 juillet 2022 Statut Membre Dernière intervention 4 décembre 2022
8 nov. 2022 à 18:52

Merci, j'avais déjà trouvé la solution initiale avec une exception, mais merci quand même

Bonne soirée

0