Linux 下查看局域网内所有主机IP和MAC

nmap对局域网扫描一遍,然后查看arp缓存表就可以知道局域内ip对应的mac了。nmap比较强大也可以直接扫描mac地址和端口。执行扫描之后就可以 cat /proc/net/arp查看arp缓存表了。

进行ping扫描,打印出对扫描做出响应的主机:  

$ nmap -sP 192.168.1.0/24  


仅列出指定网络上的每台主机,不发送任何报文到目标主机: 

$ nmap -sL 192.168.1.0/24  


探测目标主机开放的端口,可以指定一个以逗号分隔的端口列表(-PS 2223,2580):  

$ nmap -PS 192.168.1.234  


使用UDP ping探测主机:

$ nmap -PU 192.168.1.0/24  


使用频率最高的扫描选项(SYN扫描,又称为半开放扫描),它不打开一个完全的TCP连接,执行得很快: 

$ nmap -sS 192.168.1.0/24

 

转载于:https://www.cnblogs.com/L-H-R-X-hehe/p/3785928.html

JSCH(Java Secure Channel Library)是一个用于SSH(Secure Shell)连接的库,它主要用于Java应用中实现远程shell命令执行以及文件传输等功能。如果你想要通过JSCH在Linux主机上查找同一局域网内的所有IP、端口和MAC地址,这通常涉及到网络扫描,这不是JSCH的主要功能,因为它的设计目标是安全地进行SSH交互。 然而,你可以借助一些第三方库,比如JNA(Java Native Access)或者其他网络扫描工具来完成这个任务,然后结合JSCH获取到的结果。以下是一种可能的步骤: 1. **安装和依赖**: 首先,你需要引入支持网络操作的库,例如`jna-posix`(用于操作系统调用)和`nmap`(一个著名的端口扫描工具)。 2. **使用JNA进行系统调用**: 使用JNA,可以调用Unix/Linux系统的命令行工具如`arp-scan`或`nmap`,它们能列出局域网内的设备及其相关信息。 ```java import com.sun.jna.Library; import com.sun.jna.Native; import com.sun.jna.platform.unix.ARP; public class ARPScanner { public static void main(String[] args) throws Exception { ARP arp = (ARP) Native.loadLibrary("libresolv", ARP.class); List<String> ipList = arp.getAddresses(); // ...后续处理ip列表 } } ``` 请注意,JNA需要提供正确的动态链接库(.so或.dll),并可能受限于权限和防火墙设置。 3. **使用nmap扫描端口**: 如果你想同时扫描端口,可以使用nmap的Java API,或者直接作为命令行工具运行nmap,并从标准输出解析结果。 ```java Process nmapProcess = Runtime.getRuntime().exec("nmap -sn <network_subnet>"); BufferedReader reader = new BufferedReader(new InputStreamReader(nmapProcess.getInputStream())); // ...读取nmap输出并提取IP地址和端口信息 ``` 4. **处理MAC地址**: 可以通过查询ARP表来获取对应IPMAC地址,但这同样需要调用本地的操作系统API。不过,获取MAC地址的过程通常比端口扫描更复杂,因为需要对每个已知的IP进行单独请求。 由于这些操作涉及底层操作系统的权限和网络策略,建议在测试环境中谨慎实施,并遵守隐私政策。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值