netstat获取本机监听的地址列表 —— *awk与splite命令实现*(sudo netstat -nl | grep tcp……)
问题描述:
校验某个端口是否被使用(80端口是否被使用):
1、获取本机监听的地址列表中,协议类型为tcp与tcp6的端口;
(sudo netstat -nl | grep tcp | awk '{print $4}' | awk '{split($0,a,":");print a[2]a[4]}')
2、将获取到的列表中的值,与要被对比的监听的值(例如80值)向比较。
代码实现:
#include <stdio.h>
#include <string.h>#define MAX_BUF 1024*2*2
#define CHECK 1#define SUCCESS 0
#define PARAMETER_VALUE_ERROR 101 //参数值错误,不符合要求,如有边界值或选项参数/******************************************************************
简述:获取本机的监听端口列表
参数:void
返回值:监听的端口列表,并以逗号分割,失败返回NULL
备注:
*******************************************************************/
static int _authservice_Check_port(char *pcPort)
{int i = 0; FILE *pf = NULL;char szListen[MAX_BUF] = {0};/* 使用popen获取本机地址 */pf = popen("sudo netstat -nl | grep tcp | awk '{print $4}' | awk '{split($0,a,\":\");print a[2]a[4]}'", "r");if(NULL == pf){return CHECK;}while(NULL != fgets(szListen, sizeof(szListen), pf)){ szListen[strlen(szListen) - 1] = '\0';printf("##%s##\n", szListen);if(!strncmp(pcPort, szListen, sizeof(pcPort))){return PARAMETER_VALUE_ERROR;}}return SUCCESS;
}int main()
{//端口的校验,0~65535 且不能有使用过的端口if(SUCCESS != (_authservice_Check_port("80"))){ return PARAMETER_VALUE_ERROR;}else{printf("Has not been used!\n"); //没有被使用}return SUCCESS;
}
结果显示:
[root@J01051386 test]# gcc link1.c
[root@J01051386 test]# ./a.out
##111##
##48145##
##22##
##631##
##25##
##902##
##111##
##22##
##631##
##25##
##43260##
##902##
Has not been used!
其他:
链表实现的方式见:
netstat获取本机监听的地址列表 —— *链表实现*(sudo netstat -nl | grep -w tcp | awk '{print $4}')
注:(链表实现中,只能匹配tcp不可匹配tcp6的端口)
netstat获取本机监听的地址列表 —— *awk与splite命令实现*(sudo netstat -nl | grep tcp……)相关推荐
- netstat获取本机监听的地址列表 —— *链表实现*(sudo netstat -nl | grep -w tcp | awk '{print $4}')
问题描述: 获取本机监听的地址列表中,协议类型为tcp的端口.(sudo netstat -nl | grep -w tcp) 知识填充: 在linux一般使用netstat 来查看系统端口使用情况步 ...
- Linux的ipv6不监听端口,netstat查看服务端口监听在ipv6但是通过ipv4地址可正常访问...
在Linux系统中,会发现一个有趣的现象,通过 netstat 查看监听的服务端口时,发现有些服务 Proto(protocol协议) 项只显示了 tcp6(代表监听服务端口在IPv6协议), 没有 ...
- Oracle修改监听IP地址
oracle 11g断网安装时,没有检测net的功能,所以安装完后,netstat -an 发现自动监听的是127.0.0.1:1521,这样安装完成后,其他的主机根本无法连接,是什么原因呢? 排错后 ...
- uniapp获取通知栏内容 监听通知栏信息
uniapp获取通知栏内容 监听通知栏信息 简单介绍 插件地址 简单介绍 采用安卓原生SDK开发出来的一款安卓uniapp的插件,此插件只支持安卓,ios不支持. 监听通知栏内容,获取通知栏消息 安卓 ...
- python获取mac、计算机id_python 获取本机IP、mac地址、计算机名的简单示例
这篇文章主要为大家详细介绍了python 获取本机IP.mac地址.计算机名的简单示例,具有一定的参考价值,可以用来参考一下. 对python获取本机IP.mac地址.计算机名感兴趣的小伙伴,下面一起 ...
- 获取运行端口监听的用户身份auth-owner
获取运行端口监听的用户身份auth-owner Windows系统提供工作在TCP 113端口的授权服务(Authentication Service),用来判断TCP连接的用户.Nmap的auth- ...
- 获取本机的真实IP地址
Code: import java.net.InetAddress; import java.net.UnknownHostException; /** * 获取本机的真实IP地址.<br> ...
- c#中如何获取本机用户名、MAC地址、IP地址、硬盘ID、CPU序列号、系统名称、物理内存...
我们在利用C#开发桌面程序(Winform)程序的时候, 经常需要获取一些跟系统相关的信息, 以下这些代码获取能有些用处. c#中如何获取本机用户名.MAC地址.IP地址.硬盘ID.CPU序列号.系统 ...
- netstat linux查看监听端口号,linux用netstat查看服务及监听端口
[root@localhost ~]# netstat -nlp netstat命令各个参数说明如下: -t : 指明显示TCP端口 -u : 指明显示UDP端口 -l : 仅显示监听套接字(所谓套接 ...
最新文章
- 2022-2028年中国橡胶板的制造行业发展战略规划及投资方向研究报告
- 第166天:canvas绘制饼状图动画
- ​linux 系统出现Give root password for maintenance 问题
- PHP基础系列之正则表达式(一)
- delphi报列表索引越界怎么处理_Python入门第3课:列表元组,看这一篇够了 | 原创...
- Android画板控件,可以写字,签名,画画并生成图片
- 武大计算机几天出录取结果,录取大概要几天 多久录取结果出来
- 基于跨模态预测的多模态情感分类
- java jdk学习_Java学习第一步:JDK环境搭建(纯小白向)
- cookie注入原理详解(一)
- SQL Server 2008 存储结构之DCM、BCM
- error: invalid argument ‘-std=gnu++98‘ not allowed with ‘C‘
- java控制台进度_java进度条:控制台输出百分比示例代码
- 软考-嵌入式系统设计师-笔记:历年专业英语题
- new115.com dz.html,超实用的HTML代码段(赵荣娇)
- jquery H5 好用的编辑器umeditor
- 备份恢复Lesson 08. Using RMAN-Encrypted Backups
- 在局域网访问 XAMPP 服务器本地主机
- 前端系列——与众不同的移动端底部固定栏 fixed、absolute 兼容 iOS 和 Android 方案...
- iOS-Xcode8新特性(Code signing is required for product type 'Application' in SDK 'iOS 10.0')