netcat(nc) tips
telnet関連開発をするにあたり、netcatを使って、擬似telnetサーバーやクライアントを実現しようとしたときのメモ。
nc (netcat)
使い方は多数見つかる。
telnet
1文字ずつ送るのが特徴。ポート番号は23。
サーバーでのエコーバック
FIFO(パイプ)を使って実現。mkfifoコマンドを使う。
$ rm -f /tmp/f; mkfifo /tmp/f
$ cat /tmp/f | nc -l -p 23 > /tmp/f
参照サイト
サーバー側でのリモートアクセスの実現。内容は少々リスキー。
1文字送信
- 入力中のCtrl-Dで即時送信
- stty -icanon && nc 相手のIPアドレス 23
How can I force netcat to send my input immediately, not just on newlines?
実験
サーバー側は上記のエコーバックを実行中とする。クライアント側(Mac利用)の状況。
1. Ctrl-D
$ nc 192.168.250.2 23
abc // "abc"とタイプ後にEnterキー
abc // エコーバック
112233D // "1"をタイプ後にCtrl-D、"1"がエコーバック
// "2"をタイプ後にCtrl-D、"2"がエコーバック
// "3"をタイプ後にCtrl-D、"3"がエコーバック、最後になぜか"D"が表示
2. stty
$ stty -icanon && nc 192.168.250.2 23
AABBCC // "A"をタイプ直後に"A"がエコーバック
// "B"をタイプ直後に"B"がエコーバック
// "C"をタイプ直後に"C"がエコーバック、
EOF