Created
December 10, 2019 10:20
-
-
Save koshigoe/f09862b0e06dba7f5d72b729383bfbc9 to your computer and use it in GitHub Desktop.
Ruby の Net::FTP#put で例外が発生するとコネクションを閉じない?
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
require 'net/ftp' | |
def upload | |
ftp = Net::FTP.new | |
ftp.read_timeout = 0.1 | |
ftp.passive = true | |
ftp.connect('localhost') | |
ftp.login('user', 'pass') | |
i = 0 | |
ftp.put(__FILE__, '/uploaded', 1) do |data| | |
i += 1 | |
raise 'Bomb' if i > 3 | |
end | |
rescue => e | |
puts e.message | |
ensure | |
unless ftp.closed? | |
ftp.close | |
puts 'closed.' | |
end | |
end | |
11.times { upload } | |
puts 'wait' | |
loop {} | |
__END__ | |
$ docker run --rm \ | |
-p 20-21:20-21 \ | |
-p 21100-21110:21100-21110 \ | |
-e FTP_USER=user \ | |
-e FTP_PASS=pass \ | |
-e PASV_ADDRESS=localhost \ | |
-e PASV_MIN_PORT=21100 \ | |
-e PASV_MAX_PORT=21110 \ | |
fauria/vsftpd | |
$ ruby test.rb | |
Bomb | |
closed. | |
Net::ReadTimeout with #<Socket:fd 11> | |
closed. | |
Net::ReadTimeout with #<Socket:fd 11> | |
closed. | |
Net::ReadTimeout with #<Socket:fd 11> | |
closed. | |
Net::ReadTimeout with #<Socket:fd 11> | |
closed. | |
Net::ReadTimeout with #<Socket:fd 11> | |
closed. | |
Net::ReadTimeout with #<Socket:fd 11> | |
closed. | |
Net::ReadTimeout with #<Socket:fd 11> | |
closed. | |
Net::ReadTimeout with #<Socket:fd 11> | |
closed. | |
Net::ReadTimeout with #<Socket:fd 11> | |
closed. | |
Net::ReadTimeout with #<Socket:fd 11> | |
closed. | |
wait | |
$ lsof -i:21100-21110 | |
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME | |
com.docke 1354 koshigoe 17u IPv6 0x370c967258b56c15 0t0 TCP *:21110 (LISTEN) | |
com.docke 1354 koshigoe 19u IPv6 0x370c967258b543d5 0t0 TCP *:21109 (LISTEN) | |
com.docke 1354 koshigoe 21u IPv6 0x370c967258b56095 0t0 TCP *:21108 (LISTEN) | |
com.docke 1354 koshigoe 23u IPv6 0x370c967258b55515 0t0 TCP *:21107 (LISTEN) | |
com.docke 1354 koshigoe 25u IPv6 0x370c967258b53e15 0t0 TCP *:21106 (LISTEN) | |
com.docke 1354 koshigoe 29u IPv6 0x370c967258b571d5 0t0 TCP *:21105 (LISTEN) | |
com.docke 1354 koshigoe 31u IPv6 0x370c967256ed8e15 0t0 TCP *:21104 (LISTEN) | |
com.docke 1354 koshigoe 33u IPv6 0x370c967256edb095 0t0 TCP *:21103 (LISTEN) | |
com.docke 1354 koshigoe 35u IPv6 0x370c967256edaad5 0t0 TCP *:21102 (LISTEN) | |
com.docke 1354 koshigoe 37u IPv6 0x370c967256ed93d5 0t0 TCP *:21101 (LISTEN) | |
com.docke 1354 koshigoe 39u IPv6 0x370c967256ed9f55 0t0 TCP *:21100 (LISTEN) | |
com.docke 1354 koshigoe 45u IPv6 0x370c967256eda515 0t0 TCP localhost:21105->localhost:61667 (ESTABLISHED) | |
com.docke 1354 koshigoe 47u IPv6 0x370c967257775655 0t0 TCP localhost:21109->localhost:61669 (ESTABLISHED) | |
com.docke 1354 koshigoe 49u IPv6 0x370c967257772855 0t0 TCP localhost:21107->localhost:61671 (ESTABLISHED) | |
com.docke 1354 koshigoe 51u IPv6 0x370c9672434ea655 0t0 TCP localhost:21104->localhost:61673 (ESTABLISHED) | |
com.docke 1354 koshigoe 53u IPv6 0x370c9672434e9515 0t0 TCP localhost:21106->localhost:61675 (ESTABLISHED) | |
com.docke 1354 koshigoe 55u IPv6 0x370c967241a2b095 0t0 TCP localhost:21110->localhost:61677 (ESTABLISHED) | |
com.docke 1354 koshigoe 57u IPv6 0x370c967241a2b655 0t0 TCP localhost:21102->localhost:61679 (ESTABLISHED) | |
com.docke 1354 koshigoe 59u IPv6 0x370c967241a2c1d5 0t0 TCP localhost:21100->localhost:61681 (ESTABLISHED) | |
com.docke 1354 koshigoe 61u IPv6 0x370c96725927f995 0t0 TCP localhost:21101->localhost:61683 (ESTABLISHED) | |
com.docke 1354 koshigoe 63u IPv6 0x370c967259281095 0t0 TCP localhost:21103->localhost:61689 (ESTABLISHED) | |
com.docke 1354 koshigoe 65u IPv6 0x370c967258b55ad5 0t0 TCP localhost:21108->localhost:61693 (ESTABLISHED) | |
ruby 75273 koshigoe 13u IPv6 0x370c9672385ae1d5 0t0 TCP localhost:61667->localhost:21105 (ESTABLISHED) | |
ruby 75273 koshigoe 14u IPv6 0x370c967256ed8855 0t0 TCP localhost:61669->localhost:21109 (ESTABLISHED) | |
ruby 75273 koshigoe 15u IPv6 0x370c967257773f55 0t0 TCP localhost:61671->localhost:21107 (ESTABLISHED) | |
ruby 75273 koshigoe 16u IPv6 0x370c9672434eac15 0t0 TCP localhost:61673->localhost:21104 (ESTABLISHED) | |
ruby 75273 koshigoe 17u IPv6 0x370c9672434e8f55 0t0 TCP localhost:61675->localhost:21106 (ESTABLISHED) | |
ruby 75273 koshigoe 18u IPv6 0x370c9672434e7855 0t0 TCP localhost:61677->localhost:21110 (ESTABLISHED) | |
ruby 75273 koshigoe 19u IPv6 0x370c967241a2aad5 0t0 TCP localhost:61679->localhost:21102 (ESTABLISHED) | |
ruby 75273 koshigoe 20u IPv6 0x370c967241a29995 0t0 TCP localhost:61681->localhost:21100 (ESTABLISHED) | |
ruby 75273 koshigoe 21u IPv6 0x370c96725927ee15 0t0 TCP localhost:61683->localhost:21101 (ESTABLISHED) | |
ruby 75273 koshigoe 22u IPv6 0x370c967259281c15 0t0 TCP localhost:61689->localhost:21103 (ESTABLISHED) | |
ruby 75273 koshigoe 23u IPv6 0x370c967258b56655 0t0 TCP localhost:61693->localhost:21108 (ESTABLISHED) | |
sh-4.1# ps aux | grep '[v]sftpd' | |
root 1 0.0 0.0 11368 2440 ? Ss 09:01 0:00 /bin/bash -ex /usr/sbin/run-vsftpd.sh | |
root 13 0.0 0.1 52184 3864 ? S 09:01 0:00 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf | |
nobody 3158 0.0 0.1 56584 3564 ? Ss 09:30 0:00 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf | |
ftp 3160 0.0 0.0 56684 2432 ? S 09:30 0:00 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf | |
nobody 3161 0.0 0.1 56584 3564 ? Ss 09:30 0:00 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf | |
ftp 3163 0.0 0.0 56608 2432 ? S 09:30 0:00 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf | |
nobody 3164 0.0 0.1 56584 3564 ? Ss 09:30 0:00 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf | |
ftp 3166 0.0 0.0 56608 2432 ? S 09:30 0:00 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf | |
nobody 3167 0.0 0.1 56584 3564 ? Ss 09:30 0:00 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf | |
ftp 3169 0.0 0.0 56608 2432 ? S 09:30 0:00 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf | |
nobody 3170 0.0 0.1 56584 3564 ? Ss 09:30 0:00 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf | |
ftp 3172 0.0 0.0 56608 2432 ? S 09:30 0:00 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf | |
nobody 3173 0.0 0.1 56584 3564 ? Ss 09:30 0:00 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf | |
ftp 3175 0.0 0.0 56608 2432 ? S 09:30 0:00 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf | |
nobody 3176 0.0 0.1 56584 3564 ? Ss 09:30 0:00 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf | |
ftp 3178 0.0 0.0 56608 2432 ? S 09:30 0:00 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf | |
nobody 3179 0.0 0.1 56584 3564 ? Ss 09:30 0:00 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf | |
ftp 3181 0.0 0.0 56608 2432 ? S 09:30 0:00 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf | |
nobody 3182 0.0 0.1 56584 3564 ? Ss 09:30 0:00 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf | |
ftp 3184 0.0 0.0 56608 2432 ? S 09:30 0:00 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf | |
nobody 3185 0.0 0.1 56584 3564 ? Ss 09:30 0:00 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf | |
ftp 3187 0.0 0.0 56608 2432 ? S 09:30 0:00 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf | |
nobody 3188 0.0 0.1 56584 3564 ? Ss 09:30 0:00 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf | |
ftp 3190 0.0 0.0 56608 2432 ? S 09:30 0:00 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment