iptables用に使用するIPアドレス一覧を持っています。
これは1つのアドレスをあらわす表記と、ネットワークアドレスを表す一般的な「/ビット」表記が可能です。
それを、tcprules で使用するためにアドレス表記を変換したいのですが、簡易な関数やツールはありますでしょうか。
(例)
iptables用
192.168.0.1
192.168.0.0/16
192.168.0.0/18
tcprules用
192.168.0.1
192.168.
192.168.0-63.
(参考)
http://www.emaillab.org/djb/tools/ucspi-tcp/tcpr …
No.1ベストアンサー
- 回答日時:
ご希望の形式で出力されれものはないような気がします。
下記のようなコマンドイメージで実行して、その表示結果からご希望の形式に直すというのは駄目ですか?
Perl(非標準モジュール Net::CIDR使用)
○192.168.0.0/16
%perl -e 'use Net::CIDR;print join("\n", Net::CIDR::cidr2octets("192.168.0.0/16"))."\n"'
192.168
○192.168.0.0/18
%perl -e 'use Net::CIDR;print join("\n", Net::CIDR::cidr2octets("192.168.0.0/18"))."\n"'
192.168.0
192.168.1
192.168.2
192.168.3
192.168.4
192.168.5
192.168.6
192.168.7
192.168.8
192.168.9
192.168.10
192.168.11
192.168.12
192.168.13
192.168.14
192.168.15
192.168.16
192.168.17
192.168.18
192.168.19
192.168.20
192.168.21
192.168.22
192.168.23
192.168.24
192.168.25
192.168.26
192.168.27
192.168.28
192.168.29
192.168.30
192.168.31
192.168.32
192.168.33
192.168.34
192.168.35
192.168.36
192.168.37
192.168.38
192.168.39
192.168.40
192.168.41
192.168.42
192.168.43
192.168.44
192.168.45
192.168.46
192.168.47
192.168.48
192.168.49
192.168.50
192.168.51
192.168.52
192.168.53
192.168.54
192.168.55
192.168.56
192.168.57
192.168.58
192.168.59
192.168.60
192.168.61
192.168.62
192.168.63
Net::CIDRモジュールはCPANからダウンロード出来ます。
参考URL:http://search.cpan.org/~mrsam/Net-CIDR-0.10/CIDR …
この回答への補足
iptables と tcprules でルール設定している例はある程度あるのではないかと思うのですが、知られたアドレス変換関数は無いのでしょうかねぇ。
教えて頂いたモジュールを使って以下のようにして実現できました。
どうもありがとうございました。
----------------------------------------
$ echo $(./conv_ip_fw_tcp "192.168.0./17")
192.168.0-127.
$
----------------------------------------
#!/usr/bin/perl
use strict;
use Net::CIDR;
my $addr_in = $ARGV[0]; # input
my $addr_out; # output
my @list1; # CIDR return
eval{ @list1 = Net::CIDR::cidr2octets( $addr_in );};
die "CIDR ERROR:$@\n" if($@);
my $list1_len = @list1;
if($list1_len == 1){
$addr_out = $list1[0];
}
elsif($list1_len > 1){
my $addr_fr = shift @list1;
my @list_to = split(/\./, pop @list1);
my $addr_to = pop @list_to;
$addr_out = $addr_fr.'-'.$addr_to;
}
my @list2 = split(/\./, $addr_out);
my $list2_len = @list2;
$addr_out .= '.' if($list2_len != 4);
print $addr_out;
----------------------------------------
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Oracle ビットで表せる数値について 3 2022/09/12 16:37
- UNIX・Linux Ubuntuサーバーでメールを受信できない 7 2022/08/23 20:55
- その他(学校・勉強) この中で間違ってある説明はありますか?詳しい方に教えていただきたいです。 A. 1つのプログラムが複 2 2023/07/14 01:15
- Firefox(ファイヤーフォックス) Firefoxのグーグル検索で表示される現在地を修正したい!!! 1 2022/05/17 10:42
- 固定IP Firefoxので表示される現在地を修正するには? 2 2022/05/17 21:16
- その他(インターネット接続・インフラ) ブラウザにIPアドレス入力した時 1 2022/06/16 19:08
- その他(プログラミング・Web制作) このプログラミング誰か教えてくれませんか 4 2022/04/29 15:56
- ネットワーク 例えば192.168.1.10はプライベートIPアドレスで合っていますか? 3 2022/07/05 01:18
- 据え置き型ゲーム機 PS5 抽選 ipアドレス 同一世帯複数応募 ヤマダ電機のPS5抽選にて家族にも手伝ってもらったので 4 2022/06/05 20:07
- VPN 接続のたびにIPが変わるVPNサービスが知りたい 2 2022/06/27 02:34
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
bashでシングルクォート内の変...
-
ubuntu(linux)のシャットダウン...
-
[Linux初心者]Ubuntu22.04.3LTS...
-
自作のウェブサイトを友人に見...
-
AWSでSSH接続をしたいのですが...
-
ubuntuのシャットダウンが進ま...
-
ubuntuで デイスク/deb/loopと...
-
Ubuntu系とCentOS系の違いはな...
-
lubuntuのインストールが終わり...
-
Windowsのローカルディレクトリ...
-
linuxサーバーのキャッシュをク...
-
Linuxのパーティション番号の変...
-
Ubuntu でinvalid filenameとな...
-
LinuxのOSのインストールについて
-
年末ですが大至急お願い申し上...
-
Apach Solr-8.4.1のチューニン...
-
tarで纏める際に、複数場外した...
-
Postfixでドコモメールに送信す...
-
ssl_error_logのエラー内容(AH...
-
ssl_request_logの必要性について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
macアドレスの疎通確認のコマン...
-
WinSCPとの接続の切断方法について
-
EXCEL2003のVBAで AutoFilter...
-
開いているポートを調べたいの...
-
AIXのoslevelコマンド
-
MS-DOSのconfig.sys内のEMM386....
-
iMovieでビデオの分割ができな...
-
linuxのufwコマンドについて
-
snoopの初歩教えて
-
net useの「利用不可」について
-
IPアドレス表記の変換(iptable...
-
NFSによるデータ書き込みのチュ...
-
ネットワークドライブの切断と...
-
WindowsXP FTPクライアント
-
CPU使用率が非常に不安定
-
apacheのポートが使用されている?
-
DOSコマンドで使用可能なIPアド...
-
ファイアウォールとquitコマンド
-
ポートの解放について
-
shutdownコマンドを投入しても...
おすすめ情報