paloma blog

NWエンジニアやってます。主に自宅環境のお遊びを書きます。Pythonもちょっと。タイトルは好きなカクテルから。

distributionによるipcalcコマンドの違い

twitterでipcalcコマンドの話題が流れてきました。

しかし私の知っている出力と違う。

tweetの画像はCygwinのipcalc結果らしいのですが、
そういえばRedhat系のipcalcしか使ったこと無いので
distributionで違うのかなと思い
今回Redhat系とDebian系を調べてみることにしました。

もちろんエンジニアなら自宅に両環境ありますよね!

Redhat

CentOSのipcalcはサブネット計算でたまに使っています。
(NWエンジニアなら基本は丸暗記ですよ)

環境

以前pppの検証で使ったCentOSで確認。

[vagrant@ppp-server ~]$ cat /etc/redhat-release 
CentOS Linux release 7.7.1908 (Core)
[vagrant@ppp-server ~]$ uname -a
Linux ppp-server 3.10.0-957.12.2.el7.x86_64 #1 SMP Tue May 14 21:24:32 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux
バージョン

バージョンが確認できるオプション(-v, --version)がありませんね。

[vagrant@ppp-server ~]$ ipcalc --usage
Usage: ipcalc [-c46bhmnps?] [-c|--check] [-4|--ipv4] [-6|--ipv6] [-b|--broadcast] [-h|--hostname] [-m|--netmask]
        [-n|--network] [-p|--prefix] [-s|--silent] [-?|--help] [--usage]
出力

Redhat系のipcalcはオプションをつけないと計算してくれません。

-mnbをよく使います。
また、wildcard maskは計算してくれないんですよね。

[vagrant@ppp-server ~]$ ipcalc -mnb 192.168.0.10/24
NETMASK=255.255.255.0
BROADCAST=192.168.0.255
NETWORK=192.168.0.0
その他確認
  • manページ

https://linux.die.net/man/1/ipcalc

  • which
[vagrant@ppp-server ~]$ which ipcalc
/usr/bin/ipcalc
  • file
[vagrant@ppp-server ~]$ file /usr/bin/ipcalc
/usr/bin/ipcalc: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, BuildID[sha1]=87aa0b7dc72e30ec9233e381985bd24aac78de3c, stripped

バイナリファイルですね。

パッケージを確認しましたが出ませんでした。
専用のパッケージではない様です。

[vagrant@ppp-server ~]$ rpm -qa | grep ipcalc
[vagrant@ppp-server ~]$ 

何かのUtilityとして含まれているんですかね。

Authorのアドレスにredhat.comと入っているので
Redhat系OSには最初から組み込まれているのかもしれませんね。

Debian

環境

いつものサブ機ubuntuに入れます。

masashi@PC-ubuntu:~$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 18.04.3 LTS
Release:        18.04
Codename:       bionic
masashi@PC-ubuntu:~$ uname -a
Linux PC-ubuntu 4.15.0-72-generic #81-Ubuntu SMP Tue Nov 26 12:20:02 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux

aptからインストールします。

バージョン
masashi@PC-ubuntu:~$ ipcalc --version
0.41
出力

オプションなしでNW関連の値をいろいろ計算してくれます。 おまけに2進数表記まで。

masashi@PC-ubuntu:~$ ipcalc 192.168.0.10/24
Address:   192.168.0.10         11000000.10101000.00000000. 00001010
Netmask:   255.255.255.0 = 24   11111111.11111111.11111111. 00000000
Wildcard:  0.0.0.255            00000000.00000000.00000000. 11111111
=>
Network:   192.168.0.0/24       11000000.10101000.00000000. 00000000
HostMin:   192.168.0.1          11000000.10101000.00000000. 00000001
HostMax:   192.168.0.254        11000000.10101000.00000000. 11111110
Broadcast: 192.168.0.255        11000000.10101000.00000000. 11111111
Hosts/Net: 254                   Class C, Private Internet

しかもカラー出力してくれます。

f:id:paloma69:20200126190512p:plain

Cygwinはこっちのパッケージを使っているようですね。

その他確認
  • manページ

Debianのだけど

https://manpages.debian.org/jessie/ipcalc/ipcalc.1.en.html

  • which
masashi@PC-ubuntu:~$ which ipcalc
/usr/bin/ipcalc
  • file
masashi@PC-ubuntu:~$ file /usr/bin/ipcalc
/usr/bin/ipcalc: Perl script text executable

Debian系はPerl製のようです。
Redhat版とは完全に別物ですね。

こっちはdebパッケージとして入ってますね。

masashi@PC-ubuntu:~$ dpkg -l | grep ipcalc
ii  ipcalc                                     0.41-5                                              all
     parameter calculator for IPv4 addresses

まとめ

ipcalcはRedhat系とDebian系で使い勝手は変わりませんが、
結局別のコマンドだということがわかりました。

同じコマンド名でdistributionによって中身が違うパターンというのは珍しいと思います。

分派というわけではなさそうですが、
なぜ同じコマンド名になったのか面白いので追ってみたいですね。