tftp サーバー立てて起動イメージを配布
tftp サーバーがあれば、ルータ機器や、PXEブートなどをぱぱっと使えるので便利です。
tftp を入れようとしたら、入ってた
OSXには最初から入ってた。サーバーもクライアントも入ってた。便利な世の中なんだね。
osx の tftp の起動
sudo launchctl load -w /System/Library/LaunchDaemons/tftp.plist
起動の確認
takuya@~$ sudo lsof -i:69 Password: COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME launchd 1 root 37u IPv6 0x7e0bc6654a4a7011 0t0 UDP *:tftp launchd 1 root 39u IPv4 0x7e0bc6654a4a7279 0t0 UDP *:tftp launchd 1 root 40u IPv6 0x7e0bc6654a4a7011 0t0 UDP *:tftp launchd 1 root 41u IPv4 0x7e0bc6654a4a7279 0t0 UDP *:tftp takuya@~$
起動したのでアクセスしてみたい
launchd 用の 起動ファイルを見ると、 /private/tftpboot
がtftpd のファイル置き場らしい。
takuya@~$ cat /System/Library/LaunchDaemons/tftp.plist
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>Disabled</key> <true/> <key>Label</key> <string>com.apple.tftpd</string> <key>ProgramArguments</key> <array> <string>/usr/libexec/tftpd</string> <string>-i</string> <string>/private/tftpboot</string> </array> <key>inetdCompatibility</key> <dict> <key>Wait</key> <true/> </dict> <key>InitGroups</key> <true/> <key>Sockets</key> <dict> <key>Listeners</key> <dict> <key>SockServiceName</key> <string>tftp</string> <key>SockType</key> <string>dgram</string> </dict> </dict> </dict> </plist>
ファイルを設置してみる
echo It Works >> test.html sudo cp test.html /private/tftpboot/index.html rm index.html
tftp でアクセスしてみる
takuya@~/Desktop$ tftp tftp> connect 127.0.0.1 tftp> get index.html Received 10 bytes in 0.0 seconds takuya@~/Desktop$ cat index.html It Works
IPv6でも行けるようだ
takuya@~/Desktop$ tftp tftp> connect ::1 tftp> get index.html Received 10 bytes in 0.0 seconds tftp> ^Dtakuya@~/Desktop$ cat index.html It Works
使い終わったら終了しよう
69番を開けてると狙われるだけなので、ListenしてるDaemonを終了しよう。
takuya@~/Desktop$ sudo lsof -i:69 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME launchd 1 root 37u IPv4 0x7e0bc6654a4a7011 0t0 UDP *:tftp launchd 1 root 39u IPv6 0x7e0bc6654a4a7279 0t0 UDP *:tftp launchd 1 root 40u IPv4 0x7e0bc6654a4a7011 0t0 UDP *:tftp launchd 1 root 41u IPv6 0x7e0bc6654a4a7279 0t0 UDP *:tftp takuya@~/Desktop$ sudo launchctl unload -w /System/Library/LaunchDaemons/tftp.plist takuya@~/Desktop$ sudo lsof -i:69 takuya@~/Desktop$
ファイルも消す
takuya@~/Desktop$ rm /private/tftpboot/*