bagaimana ftp ke nama host gagal meskipun DNS memberikan valide ip addr dan ftp ke addr berhasil?

0

Bagaimana ini mungkin?

NodeX# ping ftp.company.com
PING ftp.company.com (xx.yy.8.11) 56(84) bytes of data.
64 bytes from ftp.company.com (xx.yy.8.11): icmp_seq=1 ttl=127 time=0.657 ms
...
^C
NodeX# /usr/bin/myftp.py -fftp.company.com -uuser -ppasssword 
Transferring myftp.tgz to ftp.company.com:Incoming/
*** ftp login failed: [Errno -5] No address associated with hostname
Operation failed, exit code=3

Sedangkan jika saya melakukan ini, ia bekerja:

NodeX# /usr/bin/myftp.py -fxx.yy.8.11 -uuser -ppassword 
Transferring myftp.tgz to ftp.company.com:Incoming/
Operation completed successfully

Juga, jika saya membuat entri di / etc / hosts, maka itu berfungsi menggunakan namanya. Apa yang menyebabkannya?

Menggali menunjukkan:

NodeX# dig ftp.company.com ANY

; <<>> DiG 9.5.0-P2 <<>> ftp.company.com ANY
;; global options:  printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 21125
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;ftp.company.com. IN      ANY

;; ANSWER SECTION:
ftp.company.com. 28800 IN A       xx.yy.8.11

;; Query time: 1 msec
;; SERVER: xx.zz.8.34#53(xx.zz.8.34)
;; WHEN: Thu Oct 11 14:53:00 2012
;; MSG SIZE  rcvd: 63

resolv.conf menampilkan 2 nameserver, sebuah dig @ach masing-masing mengembalikan IP.

Kode Python 2.6 terlihat seperti:

    try:
        print("Preparing ftplib.FTP for " + ftpHost)
        ftp = ftplib.FTP()
    except Exception, e:
        print("*** ftp prep failed: %s" % e.__str__())
        return 3
    end
    try:
        print("Connecting to '" + ftpHost + "'")
        ftp.connect(ftpHost, ftpPort)
    except Exception, e:
        print("*** ftp connection failed: %s" % e.__str__())
        return 4
    end

Output adalah:

Preparing ftplib.FTP for ftp.company.com
Connecting to 'ftp.company.com'
*** ftp connection failed: [Errno -5] No address associated with hostname
Operation failed, exit code=4

sementara:

Node2414332# ping ftp.company.com
PING ftp.company.com (xx.yy.8.11) 56(84) bytes of data.
64 bytes from ftp.company.com (xx.yy.8.11): icmp_seq=1 ttl=127 time=0.804 ms

TERPECAHKAN:

Meskipun koneksi python kita () gagal di getaddrinfo () ketika diberi nama host (lihat di bawah), ini berfungsi dengan alamat. Secara mudah, gethostbyname () berfungsi dan kami memiliki perbaikan sederhana: createconnection (gethostbyname (hostname)). Weerd.

DJC
sumber
2
Ini mungkin pertanyaan yang lebih baik untuk serverfault.com
1
Seperti apa tampilan "dig ftp.company.com ANY"?
David K. Hess
Bisakah nama host itu diselesaikan melalui semua server nama di resolv.conf? (Saya berasumsi Anda menggunakan Linux berdasarkan prompt dan pathing Anda).
tMC
2
apakah Anda kebetulan memiliki tanda hubung "-" di hostname, yang menyebabkan parsing argumen baris salah menafsirkannya?
@ David, saya telah memperpanjang pertanyaan dengan output penggalian - terima kasih sudah mencoba :)
DJC