网络计算工具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 选项在脚本中处理可能无效的输入时有用,它可以抑制错误输出。

相关推荐
未济3 天前
linux 配置环境变量
linux
傲世仙尊3 天前
目录即文件-Ext文件系统收尾篇
linux·c语言
虎头金猫3 天前
4K 视频总卡在公网带宽?用 N1 + OpenList 把网盘播放链路重新理顺
运维·服务器·网络·python·容器·beautifulsoup·pandas
_艾伦 耶格尔.3 天前
进程间通信
linux
AI职业加油站3 天前
AI智能体应用工程师证书:政策红利下的职业新风口
大数据·运维·人工智能·学习·职场发展
Liuqy-053 天前
Linux IO编程——静态库、动态库
linux
wuyk5553 天前
《WiFi 嵌入式物联网开发全套实战》| 第 16 章 ESP32 AP+STA 双模共存原理与工程坑点
网络·stm32·物联网
此冬歌咏3 天前
K8s 节点故障实战:优雅驱逐 31 秒,硬故障 331 秒,以及那个永远 Pending 的 Pod
运维·k8s
彧azz3 天前
Linux 环境下 Redis 学习总结:数据类型、持久化、锁、事务、主从与缓存问题
linux·redis·笔记·学习·面试
-梅3 天前
linux(8) 软硬链接
linux·运维·服务器