僕の備忘録(PC、UN*X、ネットワーク関連が中心)なんです。
自分の書いたところは適当(な時とか)に書き換えますので御了承を。
httpなら -m
SimpleHTTPServer とかになるが、ftpはそこまで
簡単にはいかなかった。
適当に探して、python-pyftpdlib を apt-get。
from pyftpdlib import ftpserver FTP_ROOT = "$DIR/" ADDRESS = ("0.0.0.0", $PORT) authorizer = ftpserver.DummyAuthorizer() authorizer.add_anonymous(FTP_ROOT) ftp_handler = ftpserver.FTPHandler ftp_handler.authorizer = authorizer ftpd = ftpserver.FTPServer(ADDRESS, ftp_handler) ftpd.serve_forever()
$PORTは1024以上
ならユーザ権限で可能。
クライアントはanonymous ユーザでパスワードは適当。ダウンロードのみ。
以下、
参考にしたページ。
クライアント側。
$ ftp $HOST $PORT Connected to $HOST. 220 pyftpdlib 0.7.0 ready. Name ($HOST:root): anonymous 331 Username ok, send password. Password: *********** 230 Login successful. Remote system type is UNIX. Using binary mode to transfer files. ftp> ls 200 Active data connection established. 125 Data connection already open. Transfer starting. -rw-r--r-- 1 user group 153 Mar 03 01:38 $DATA 226 Transfer complete. ftp> get $DATA 200 Active data connection established. 125 Data connection already open. Transfer starting. 226 Transfer complete. 153 bytes received in 0.000372 seconds (411290 bytes/s) ftp> quit 221 Goodbye.
サーバ側。
$ python python-tempftp.py Starting FTP server []$CLIENT:$SRC_PORT Connected. $CLIENT:$SRC_PORT ==> 220 pyftpdlib 0.7.0 ready. $CLIENT:$SRC_PORT <== USER anonymous $CLIENT:$SRC_PORT ==> 331 Username ok, send password. $CLIENT:$SRC_PORT <== PASS ****** $CLIENT:$SRC_PORT ==> 230 Login successful. $CLIENT:$SRC_PORT <== SYST $CLIENT:$SRC_PORT ==> 215 UNIX Type: L8 $CLIENT:$SRC_PORT <== PORT $CLIENT,222,0 $CLIENT:$SRC_PORT ==> 200 Active data connection established. $CLIENT:$SRC_PORT <== LIST $CLIENT:$SRC_PORT ==> 125 Data connection already open. \ Transfer starting. $CLIENT:$SRC_PORT ==> 226 Transfer complete. $CLIENT:$SRC_PORT <== TYPE I $CLIENT:$SRC_PORT ==> 200 Type set to: Binary. $CLIENT:$SRC_PORT <== PORT $CLIENT,159,21 $CLIENT:$SRC_PORT ==> 200 Active data connection established. $CLIENT:$SRC_PORT <== RETR $DATA $CLIENT:$SRC_PORT ==> 125 Data connection already open. \ Transfer starting. $CLIENT:$SRC_PORT ==> 226 Transfer complete. [anonymous]@$CLIENT:$SRC_PORT "RETR $DIR/$DATA" completed=1 \ bytes=153 seconds=0.002 $CLIENT:$SRC_PORT <== QUIT $CLIENT:$SRC_PORT ==> 221 Goodbye. [anonymous]@$CLIENT:$SRC_PORT Disconnected.
リンクはご自由にどうぞ。でもURLや内容が変った場合はあしからず。