April 2020
Intermediate to advanced
352 pages
4h 11m
Japanese
宮本 久仁男
本付録は日本語版オリジナルの記事である。本稿では、本書内でよく扱われている、bashのネットワークリダイレクション機能について解説する。この機能は、外部プログラムの助けを借りずに、指定した通信先へのデータ送信を実現する。
/dev/{tcp|udp}/*/*bashは、通常のファイルリダイレクション機能以外に、TCPとUDPに限ったネットワークリダイレクション機能を実装している†1。
[†1] オプションで無効にすることも可能だが、単純にconfigure + makeする限りは有効になる。また、私が確認した限り、各種Linux、Git bash、MinGWで使えるbashはこの機能を利用可能。
通常、ネットワークへのデータ送出は、例えばnetcatなどのプログラムを使うことで実現するが、bashは単体でネットワークへのデータ送信を行える。
リダイレクト先は、以下のように記述する。なお、hostとportの指定は省略できない。
/dev/tcp/[host]/[port]/dev/udp/[host]/[port]TCPの場合は/dev/tcpを、UDPの場合は/dev/udpを用いる。TCP/UDP以外のプロトコルは使用不可。IP rawも使用できない。
なお、hostの部分はホスト名でもIPアドレスでもかまわない。IPアドレスもIPv4、IPv6両方のものを指定可能である。
実行結果は、$?を参照することで取得可能だ。
localhost、127.0.0.1、IPv6:::1のそれぞれのTCPポート12345 ...
Read now
Unlock full access