いいじまです。

野中です。
ncは使ったことが無いのですが、manを見た範囲ではクライアント側に
-Nオプションを付けるとうまくいくかもしれません。


はい。今回のテストケースはではこれでうまくいきました。

念のためいくつか調べてみましたので、以下つらつらとメモしておきます。

☆ ☆ ☆

まず、https://www.freebsd.org/cgi/man.cgi で参照できる各種OSの中では、
CentOS、Darwin、RedHat、SuSE Linuxのncには-Nがありません。
https://www.freebsd.org/cgi/man.cgi?query=nc&manpath=CentOS+7.1
https://www.freebsd.org/cgi/man.cgi?query=nc&manpath=Darwin+8.0.1%2Fppc
https://www.freebsd.org/cgi/man.cgi?query=nc&manpath=Red+Hat+Linux%2Fi386+9
https://www.freebsd.org/cgi/man.cgi?query=nc&manpath=SuSE+Linux%2Fi386+11.3

Debian、HP-UX、NetBSD、Solaris、UNTRIXにはそもそもnc自体がないようです。
(ベースシステムとは別パッケージになっているだけ?)
https://www.freebsd.org/cgi/man.cgi?query=nc&manpath=Debian+8.1.0
https://www.freebsd.org/cgi/man.cgi?query=nc&manpath=HP-UX+11.22
https://www.freebsd.org/cgi/man.cgi?query=nc&manpath=NetBSD+7.0
https://www.freebsd.org/cgi/man.cgi?query=nc&manpath=SunOS+5.10
https://www.freebsd.org/cgi/man.cgi?query=nc&manpath=ULTRIX+4.2

手元にUbuntuのバーチャルマシンがあるのでそちらでも試してみましたが、
やはり -N はありません。

☆ ☆ ☆

それから、これは釈迦に説法ですが、nc -N が使えるかどうかの判定に
   % nc -h |& egrep '[-]N[^[:alnum:]] >& /dev/null
を実行して終了コード $? で判別しようとすると罠にはまります。

FreeBSDの場合、nc -h は1を返し、egrepは0を返します。
で、このパイプをbashで実行すると $? は0になります。
ところが、同じコマンドをtcshで実行すると $? は1になります。
同じことをUbuntuでもやってみたのですが、こちらの場合、nc -h は
0を返し、egrepは1を返すので、$? はbashでもtcshでも1になります。

結局のところ、nc -N が使えるかどうかの判定には
   % test -n "`nc -h |& egrep '[-]N[^[:alnum:]]'`"
あたりを使う必要があります。

☆ ☆ ☆

あと、一つだけ訂正です。
今回の実験で FreeBSD→Linux の接続がうまくいかなかった犯人は、
FreeBSDのncコマンドではなく、Linux側のファイヤーウォールのようです。

まず、Linux側で
   % echo WELCOME | nc -l 8086 &
としてサーバを立てます。

で、FreeBSDから
   % echo GET | nc -N m2.valueserver.jp 8086
とすると、いつまでもだんまりです。

そこでCtrl+Cで強制終了して、次に
   % telnet m2.valueserver.jp 8086
とすると
   Trying 157.7.184.32...
   (しばらく待たされる)
   telnet: connect to address 157.7.184.32: Operation timed out
   telnet: Unable to connect to remote host
だそうで、要するにTCPの接続がブラックホールに吸い込まれています。

念のため、同じFreeBSDクライアントの上で
   % telnet localhost 8087
としてみると、こちらは即座に
   Trying 127.0.0.1...
   telnet: connect to address 127.0.0.1: Connection refused
   Trying ::1...
   telnet: connect to address ::1: Connection refused
   telnet: Unable to connect to remote host
と返ってきます。

…徒労でした。

========================================================================
(Mr.) IIJIMA Hiromitsu aka Delmonta <delmo...@dennougedougakkai-ndd.org>
飯嶋 浩光 / でるもんた・いいじま ; (任同)電脳外道学会 代表取締役椅子人
------------------------------------------------------------------------
Web (Japanese): http://www.dennougedougakkai-ndd.org/
     Twitter: @delmonta_iijima, @kabu_agare, #放送大学, #OUJ
 Yahoo! Japan: delmonta_iijima
------------------------------------------------------------------------
マニアツクで綾しいクイヅbot、運用開始!現在、購読者・出題者とも募集中。
    ※購読はこちらから → https://twitter.com/AyaC_KaltQ
    ※出題希望のかたは → http://kaltq.wicurio.com/
========================================================================

_______________________________________________
freebsd-users-jp@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/freebsd-users-jp
To unsubscribe, send any mail to "freebsd-users-jp-unsubscr...@freebsd.org"

メールによる返信