IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> Linux下ipcalc命令详解及C/C++实现(计算主机的IP信息) -> 正文阅读

[系统运维]Linux下ipcalc命令详解及C/C++实现(计算主机的IP信息)

如果你有时会发现自己在处理IPv4/IPV6网络时挠头,那么ipcalc可能就是你要找的工具。在Linux上,ipcalc具有更多的网络技能。 它首先收集IP地址和NetMask等数据,然后输出所得的广播,网络等信息。

ipcalc命令

ipcalc命令是一个简单的ip地址计算器,可以完成简单的IP地址计算任务。下面通过man ipcalc查看详细使用。

用法:

ipcalc [OPTION]… [/prefix] [netmask]


或者使用 ipcalc -h ,前提是你得先安装ipcalc命令(yum install ipcalc)。

在这里插入图片描述

从帮助信息来看,ipcalc命令支持如下的功能:

多种类型的位图作为输出。
地址信息是从接口中检索的。
根据DNS分辨率显示定向的主机名。
输出表示为压缩和标准。
输入地址也表示为压缩和标准。
输出格式,例如多个地址和NetMask。
用户定义的其他网络数量为输出。
IPv6标准网络输出。

ipcalc示例

  • 校验IP地址

如果校验不通过就提示ipcalc: bad IPv4 …,正确就什么都不输出。注意只是校验IP地址的格式是否正确

  • 显示广播地址


计算广播地址需要输入IP地址和掩码。

  • 显示网络掩码


计算地址掩码需要输入IP地址及网络地址位数,如果未输入网络地址位数则按照A/B/C/D/E类地址进行计算掩码。

  • 计算网络地址

可以给定IP和网络掩码计算网络地址

  • 给定IP显示对应的主机名

查看IP地址对应主机名实际上市查找/etc/hosts文件

  • 计算给定掩码的前缀

  • 组合选项

我们可以看出计算给定IP的网络掩码,广播地址,网络地址。

ipcalc命令简单实现

...
int main(int argc, char ** argv)
{

    if(argc < 2)
    {
        usage(argv[0], "You must provide a valid ip/mask");
    }

    int inputSize = get_input_size(argv[1]);

    if (inputSize > 18)
    {
        usage(argv[0], "You must provide a valid ip/mask");
    }

    int numberOfSlashes = get_number_of_slashes(argv[1]);

    if (numberOfSlashes != 1)
    {
        usage(argv[0], "You must provide a valid ip/mask");
    }

    int slashPosition = get_slash_position(argv[1]);

    if (slashPosition == 0 || slashPosition == inputSize - 1)
    {
        usage(argv[0], "You must provide a valid ip/mask");
    }

    get_ip_string(argv[1], ip_string, slashPosition);

    if (!is_valid_ip_address(ip_string))
    {
        usage(argv[0], "You must provide a valid ip/mask");
    }

    get_mask_string(argv[1], mask_string, slashPosition);

    if (!is_valid_mask(mask_string))
    {
        usage(argv[0], "You must provide a valid ip/mask");
    }

    printf("\n");
    printf("Entry: %s\n", argv[1]);
    printf("\n");

    handle_input(argv[1]);

    network_address = ip_number & mask_number;
    broadcast = ~(mask_number);
    broadcast = broadcast + network_address;
    host_min = network_address + 1;
    host_max = broadcast - 1;

    // printing the results
    printf("Network address: ");
    printf("\t");
    binary_print(network_address);
    printf("\t");
    print_ip_address(&network_address);
    printf("\n");

    printf("Netmask:          ");
    printf("\t");
    binary_print(mask_number);
    printf("\t");
    print_ip_address(&mask_number);
    printf("(%d bits)", number_of_mask_bits);
    printf("\n");

    printf("Broadcast addr:   ");
    printf("\t");
    binary_print(broadcast);
    printf("\t");
    print_ip_address(&broadcast);
    printf("\n");

    printf("Min Host value:   ");
    printf("\t");
    binary_print(host_min);
    printf("\t");
    print_ip_address(&host_min);
    printf("\n");

    printf("Max Host value:   ");
    printf("\t");
    binary_print(host_max);
    printf("\t");
    print_ip_address(&host_max);
    printf("\n");
    printf("\n");

    number_of_hosts_bits = 32 - number_of_mask_bits;

    printf("The possible number of hosts on this network is %d.\n", (int)pow(2, number_of_hosts_bits) - 2);
    printf("\n");
}
...

编译运行:

总结

在本文中,了解了ipcalc工具以及在这些示例中使用它的步骤。 它是与网络相关任务的重要工具。
提供了一种计算主机IP信息的简单方法。可以完成简单的IP地址计算任务。各种选项指定ipcalc应该在标准输出上显示什么信息。

欢迎关注微信公众号【程序猿编码】,需要 ipcalc命令完整源码的添加本人微信号(c17865354792)

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2022-08-06 11:16:52  更:2022-08-06 11:19:14 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/18 21:37:40-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码