Alerte si réseau non détecté

Résolu
dopi -  
mamiemando Messages postés 33758 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour,

Je suis en train de développer une petite application que j'aimerais sécuriser pour éviter que l'exécutable soit utilisable ailleurs que sur le réseau de l'entreprise.

J'ai pensé à mettre en place un bout de code qui ferait un ping d'un serveur uniquement accessible via VPN:

def myping(host):
    resp = ping(host)
    if resp == False:
        showinfo('Erreur', 'Erreur')
        return root.destroy()
    else:
        return True
print(myping("192.168.x.x"))


Ce code fonctionne uniquement si l'adresse IP que j'ai noté est impossible,
ex:
192.168.1.3000

Dans ce cas, le message d'alerte s'affiche bien et le programme est fermé.

Si l'IP saisie est valide mais pas forcément pingable (ex
192.168.1.1
) sur le réseau (donc potentiellement un accès non autorisé), le programme se lance quand même...

Je pense que je n'arrive pas à récupérer l'erreur et que par défaut, c'est lancé.
Ce que j'aimerai faire: "Si ping OK, alors on lance, sinon, si ping KO, alors on ferme le programme".

Auriez-vous une idée, un piste s'il vous plaît ?
Merci !

3 réponses

yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 583
 
bonjour,
ne manque-t-il pas un
import
dans ton code?
0
dopi
 
Oui j'ai cet import dans le code:
from ping3 import ping
0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 583 > dopi
 
Si j'étais à ta place, je commencerais par imprimer
resp
dans les différents cas, pour comprendre ce que retourne
ping
.
0
mamiemando Messages postés 33758 Date d'inscription   Statut Modérateur Dernière intervention   7 877
 
Bonjour,

Essaye autant que possible de partager des exemples minimaux qui mettent en évidence le problème.

Si on se réfère à la documentation de ping3 tu peux contrôler si le retour de
ping
vaut
None
ou
False
. Tu peux aussi utiliser
verbose_ping
pour avoir des résultats plus complets.

En terme de sécurisation, ce n'est pas tant à l'application (et son développeur) qu'à l'administrateur de s'assurer quels requêtes réseaux sont autorisées ou non. Cela se configure typiquement au niveau du pare-feu (en particulier tu peux filtrer les paquets ICMP en fonction de leur destination).

Bonne chance
0
dopi
 
Bonjour,

Parfait avec la documentation de
ping3
, j'ai pu résoudre mon problème avec cette partie de code:

ping3.EXCEPTIONS = True
try:
    ping3.ping("192.168.1.1")
except ping3.errors.PingError:  .
    print("Ping HS")
    showinfo('Erreur 001', 'Erreur 001')
    root.destroy()


Si je déconnecte le réseau / ou coupe l'accès au ping vers l'adresse de destination, l'application m'affiche bien l'erreur.
Merci pour le coup de main :)
0
mamiemando Messages postés 33758 Date d'inscription   Statut Modérateur Dernière intervention   7 877
 
Bonjour dopi,

Merci pour ton retour et pour le code partagé. Pense à bien utiliser les balises de code à l'avenir si tu as besoin de partager du code.

Bonne continuation
0