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.
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