网络计算工具ipcalc详解

目录

[1. 选项速查表](#1. 选项速查表)

[2. 用法示例](#2. 用法示例)

[2.1 计算广播地址](#2.1 计算广播地址)

[2.2 显示 IP 地址对应的主机名](#2.2 显示 IP 地址对应的主机名)

[2.3 由给定的 IP 地址计算默认的网络掩码](#2.3 由给定的 IP 地址计算默认的网络掩码)

[2.4 显示给定掩码或 IP 地址的前缀长度](#2.4 显示给定掩码或 IP 地址的前缀长度)

[2.5 计算网络地址](#2.5 计算网络地址)

[2.6 验证 IP 地址合法性](#2.6 验证 IP 地址合法性)

[2.7 计算网络地址、广播地址和前缀长度(合并输出)](#2.7 计算网络地址、广播地址和前缀长度(合并输出))

[2.8 在脚本中使用 ipcalc 进行网络划分](#2.8 在脚本中使用 ipcalc 进行网络划分)

[3. 说明与注意事项](#3. 说明与注意事项)


ipcalc 是一个实用的网络计算工具 ,用于IP 地址的相关计算和验证。下面我用一个表格汇总它的主要选项和功能,然后通过一些实战案例来展示其用法。

1. 选项速查表

选项 (短格式) 选项 (长格式) 功能描述 使用示例
-c --check 验证 IP 地址的合法性 ipcalc -c 192.168.1.1
-b --broadcast 计算广播地址 ipcalc -b 192.168.1.10 255.255.255.0
-h --hostname 显示 IP 地址对应的主机名 (通常查询本地配置) ipcalc -h 192.168.1.1
-m --netmask 由给定的 IP 地址计算默认的网络掩码 ipcalc -m 192.168.1.10
-p --prefix 显示给定掩码或 IP 地址的前缀长度 ipcalc -p 192.168.1.10 255.255.252.0
-n --network 计算网络地址 ipcalc -n 192.168.1.10 255.255.252.0
-s --silent 安静模式,不显示任何错误信息 ipcalc -s 192.168.1.1000 (无效地址时不报错)
-4 --ipv4 指定 IPv4 地址族 (默认) ipcalc -4 192.168.1.1
-6 --ipv6 指定 IPv6 地址族 ipcalc -6 2001:db8::1
--help 显示帮助信息 ipcalc --help

2. 用法示例

2.1 计算广播地址

复制代码
[root@centos79-20251123 ~]# ipcalc -b 192.168.1.10 255.255.255.0
BROADCAST=192.168.1.255

2.2 显示 IP 地址对应的主机名

复制代码
[root@centos79-20251123 ~]# ipcalc -h  192.168.0.61
HOSTNAME=izbp16dptcafekynqfdw6yz
[root@centos79-20251123 ~]# ipcalc -h   114.114.114.114
HOSTNAME=public1.114dns.com
[root@centos79-20251123 ~]# ipcalc -h   8.8.8.8
HOSTNAME=dns.google

2.3 由给定的 IP 地址计算默认的网络掩码

复制代码
[root@centos79-20251123 ~]# ipcalc -m 192.168.1.10
NETMASK=255.255.255.0

2.4 显示给定掩码或 IP 地址的前缀长度

复制代码
[root@centos79-20251123 ~]# ipcalc -p 192.168.1.10 255.255.252.0
PREFIX=22

2.5 计算网络地址

复制代码
[root@centos79-20251123 ~]# ipcalc -n 192.168.1.10 255.255.252.0
NETWORK=192.168.0.0

2.6 验证 IP 地址合法性

复制代码
# 验证 IP 地址的合法性
[root@centos79-20251123 ~]# ipcalc -c 192.168.1.1
[root@centos79-20251123 ~]# ipcalc -c 192.168.1.1000
ipcalc: bad IPv4 address: 192.168.1.1000

在脚本中使用 ipcalc 验证用户输入的 IP 地址是否有效非常重要。

复制代码
#!/bin/bash

read -p "请输入一个IP地址: " ip_address

if ipcalc -c -s "$ip_address"; then
    echo "✅ IP 地址 $ip_address 有效。"
else
    echo "❌ IP 地址 $ip_address 无效!"
fi

输出示例

复制代码
[root@centos79-20251123 ~]# sh  test.sh
请输入一个IP地址: 192.168.1.900
❌ IP 地址 192.168.1.900 无

2.7 计算网络地址、广播地址和前缀长度(合并输出)

这是 ipcalc 最常见的用途,只需一个命令就能获取网络的关键信息。

复制代码
# 使用 CIDR 表示法一次性计算多个信息
ipcalc -n -b -p 192.168.56.100/23

输出示例

复制代码
PREFIX=23
BROADCAST=192.168.57.255
NETWORK=192.168.56.0

2.8 在脚本中使用 ipcalc 进行网络划分

假设你有一个 IP 地址和子网掩码,需要在一个脚本中提取网络地址以供后续使用。

复制代码
#!/bin/bash

ip_address="192.168.1.68"
netmask="255.255.255.224"

# 获取网络地址,并提取其值
network_addr=$(ipcalc -n $ip_address $netmask | cut -d= -f2)

echo "IP 地址 $ip_address 属于网络: $network_addr"

输出示例

复制代码
IP 地址 192.168.1.68 属于网络: 192.168.1.64

3. 说明与注意事项

  • 安装ipcalc 通常预装在大多数 Linux 发行版中。如果系统中没有,可以通过包管理器安装(例如在基于 CentOS的系统上安装initscripts包)。

  • 输出格式ipcalc 的选项输出通常是 KEY=VALUE 的形式,便于在脚本中解析。

  • 主机名查询-h 选项查询的主机名通常依赖于本地的 /etc/hosts 文件或配置的 DNS,并非所有 IP 都能解析到主机名,查询失败时会报错1。

  • 安静模式-s 选项在脚本中处理可能无效的输入时有用,它可以抑制错误输出。

相关推荐
deeper_wind4 小时前
Jenkins主机中安装ansible部署lnmp论坛(小白的”升级打怪“成长之路)
linux·ansible·jenkins
SH11HF4 小时前
Jenkins调用ansible部署lnmp平台
运维·ansible·jenkins
小薛博客4 小时前
23、Jenkins容器化部署Vue应用
运维·vue.js·jenkins
xiaozhenghahaha4 小时前
Web相关知识(草稿)
运维·nginx
格林威4 小时前
Linux使用-Linux系统管理
linux·运维·服务器·深度学习·ubuntu·计算机视觉
weixin_410413214 小时前
Linux 无源码应用行为分析方法
linux·服务器·tomcat
网硕互联的小客服4 小时前
如何配置安全的 SFTP 服务器?
运维·服务器·安全
码农101号4 小时前
Linux 网络安全运维与文件权限控制和日志操作
运维·web安全·云计算
AI小小怪6 小时前
在linux下使用MySQL常用的命令集合
linux·数据库·mysql·oracle