DNS Lookup

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
Antworten
Soox
User
Beiträge: 5
Registriert: Mittwoch 20. Oktober 2010, 14:05
Wohnort: Schönenwerd (CH)

Hi zusammen bin noch nicht so gut in Python und hab hier ein kleines problem:

Code: Alles auswählen

import DNS
import socket

#Punkt 1
Check = True
w = 'mail.wservices.ch'

while Check == True:
    dns1 = raw_input("Which Hostname?:")
    DNS.DiscoverNameServers()
    mx = DNS.mxlookup(dns1)#
    print mx
    if mx != w:
        Check = False

#Punkt 2 nur wenn Punkt 1 Check = False
ip = socket.gethostbyaddr(dns1)
print ip
So also wenn mx != w ist müsste Check den wert False erhalten.
So aber wenn ich das Programm starte und mx eigentlich gleich w wäre wird Punkt 2 Trotzdem ausgeführt
Siehe:

Code: Alles auswählen

Which Hostname?:wservices.ch
[(10, 'mail.wservices.ch'), (20, 'mail2.wservices.ch')]
Check Successfully
('wcenter.wservices.ch', [], ['91.121.99.145'])
Hier dürfte also Punkt 2 gar nicht ausgeführt werden :S
Was mache ich falsch oder was übersehe ich?
Danke und Gruss
SooX
BlackJack

@Soox: `mx` und `w` sind ganz offensichtlich nicht gleich. Schau Dir mal genau an was Du da miteinander vergleichst.
Benutzeravatar
/me
User
Beiträge: 3554
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

Soox hat geschrieben:Was mache ich falsch oder was übersehe ich?
Die Liste

Code: Alles auswählen

[(10, 'mail.wservices.ch'), (20, 'mail2.wservices.ch')]
ist garantiert nicht das gleiche wie der String 'mail.wservices.ch'.

Du musst also mit jedem einzelnen Element der Liste vergleichen und darfst dabei nicht übersehen, dass ein Einzeleintrag immer noch kein String, sondern ein Tupel ist.
Soox
User
Beiträge: 5
Registriert: Mittwoch 20. Oktober 2010, 14:05
Wohnort: Schönenwerd (CH)

/me hat geschrieben:
Soox hat geschrieben:Was mache ich falsch oder was übersehe ich?
Die Liste

Code: Alles auswählen

[(10, 'mail.wservices.ch'), (20, 'mail2.wservices.ch')]
ist garantiert nicht das gleiche wie der String 'mail.wservices.ch'.

Du musst also mit jedem einzelnen Element der Liste vergleichen und darfst dabei nicht übersehen, dass ein Einzeleintrag immer noch kein String, sondern ein Tupel ist.
Okey vielen dank für die Hilfe.
ich habs jetzt mit

Code: Alles auswählen

if mx[0][1] != w:
hinbekommen

Was ich aber nicht verstehe (mangelndes Wissen) weshalb die ausgabe nicht einfach
mail.wservices.ch ist sondern noch ein 10, am Anfang hat.

Gruss SooX
BlackJack

Nun der DocString sagt dazu:

Code: Alles auswählen

In [103]: DNS.mxlookup?
Type:           function
Base Class:     <type 'function'>
String Form:    <function mxlookup at 0x9a5141c>
Namespace:      Interactive
File:           /usr/local/lib/python2.6/dist-packages/DNS/lazy.py
Definition:     DNS.mxlookup(name)
Docstring:
    convenience routine for doing an MX lookup of a name. returns a             
    sorted list of (preference, mail exchanger) records
Ich kenne mich nicht mit DNS aus, aber ich nehme mal an `preference` wird hier eine Art Hinweis sein, welchen man bevorzugen sollte wenn man die Wahl hat.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Richtig, es können mehrere solche Records existieren und die Zahl gibt die Priorität an, wobei kleiner = präferiert. So sieht etwa mein Mailserver-Setup aus, mein eigentlicher MX hat Priorität 0 und der Backup-MX hat 10, so dass gültige Mailer keine Zeit verschwenden den Backup-MX anzumailen (Spam-Mails tun das trotzdem manchmal, aber das ist mir dann egal).
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Benutzeravatar
/me
User
Beiträge: 3554
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

Leonidas hat geschrieben:[...] so dass gültige Mailer keine Zeit verschwenden den Backup-MX anzumailen (Spam-Mails tun das trotzdem manchmal, aber das ist mir dann egal).
Es gibt Spam-Mailer die den sekundären MX bevorzugen. Die Hoffnung der Spammer ist, dass die Fallback-Systeme bezüglich Spam-Erkennung und Spam-Abwehr nicht so sauber eingestellt sind wie das primäre System.
Antworten