CURL menunda sangat lama sebelum mulai mengunduh dari ftp

0

Saya mencoba menulis skrip untuk mengunduh file, mengonversinya, lalu menjalankan program pada file yang dikonversi.

Untuk beberapa alasan curldibutuhkan lebih dari 1 menit untuk memulai transfer file.

Perintah:

curl ftp://tgftp.nws.noaa.gov/SL.us008001/ST.expr/DF.gr2/DC.ndfd/AR.conus/VP.001/ds.wx.bin -o test.out

Saya sudah mencoba menonaktifkan mode aktif dan EPRT dengan --ftp-pasvdan --disable-eprttetapi itu tampaknya tidak membuat perbedaan.

Saya sudah mencoba --verbosedan itu memberitahu saya di mana, tetapi saya masih tidak tahu mengapa.

Log in dengan cepat dan perubahan ke direktori yang benar, tetapi segera setelah mencoba mengunduh file, itu hanya duduk di sana selama lebih dari satu menit. Tepat sebelum penundaan di sini adalah output verbose:

* FTP 0x1c2b268 state change from CWD to PASV
* Connect data stream passively
< 229 Entering Extended Passive Mode (|||64103|)

Yang lucu adalah wgetmulai mengunduh segera. Saya tahu saya bisa menggunakannya, tetapi saya ingin mencari tahu mengapa curlada masalah.

Terima kasih sebelumnya.

Manusia bayangan
sumber
Dari sini cepat, jadi mungkin terkait dengan lokasi Anda. Mungkin Anda memiliki beberapa jenis perangkat firewall / DPI di antaranya yang memang bermasalah EPSV. Cobalah untuk menggunakan curl PASVsebagai gantinya --disable-epsv.
Steffen Ullrich
Saya tidak tahu apa yang kami lakukan untuk firewall, tetapi itu berhasil. Terima kasih banyak! Jika Anda ingin memasukkannya sebagai jawaban, saya akan senang menandainya dengan benar.
Shadow Man

Jawaban:

2

Masalahnya adalah semacam middlebox (firewall, perangkat inspeksi mendalam dll) yang menghasilkan masalah dengan perintah EPSV (mode pasif untuk IPv6 dan IPv4). Memaksa PASV (hanya mode pasif IPv4) dengan --disable-epsvmenyelesaikan masalah. Masalah serupa dapat terjadi jika server memiliki IPv6 dan hanya ada masalah dengan IPv6, tetapi dalam kasus ini server tidak memiliki catatan DNS AAAA.

Steffen Ullrich
sumber