last可以看到登陆的人的IP,但是看不到mac地址的如果在同一子网里面,客户端在线的情况可以用arp命令查mac var/log中的日志是自动循环的,具体的可以在/etc/logrotateconf和/etc/logrotated中自己配置
Linux/Unix *** 作系统熟悉的人都通常是用console命令控制台来进行相应的 *** 作。 Linux/Unix *** 作系统查看网卡mac地址的方法可以通过以下命令获得:
1ifconfig -a
2ip link show
3ip address show
不同的 *** 作系统下,查看的命令稍有不同。在Windows *** 作系统下,首先进入MS-DOS(或命令 *** 作符)状态,然后输入查看MAC地址命令,即可获得适配器地址 (即MAC地址)。在 《开始菜单》《运行》中执行下面的命令
我给出前三个的答案吧
#!/bin/bash
OUTPUT=jk0701_xxx_kstxt
/sbin/ifconfig eth0 | sed -n '/inet addr:/ s/inet addr:/IPADDR=/pg' | awk -F" " '{print $1}' >$OUTPUT
/sbin/ifconfig eth0 | sed -n '/HWaddr/ s/^HWaddr /HWADDR=/pg' >> $OUTPUT
netstat -an |grep ":23" |grep "ESTABLISHED" | grep -cv "grep" >> $OUTPUT
我认为你是从 socket中取不到这部分的信息的
你得再 *** 作 arp的缓存部分才行 ARP那部分如果在特殊情况,很乱套比如有攻击或是IP地址设置有冲突啥地
---
详细的C语言怎么 *** 作ARP缓存我不太清楚 但你如果想知道就得查一下这部分怎么做了
高层的socket *** 作是得不到的
只有直连网段的计算机有MAC地址信息经过路由来的数据包取不到
import javaioBufferedReader;
import javaioIOException;
import javaioInputStreamReader;
/
与系统相关的一些常用工具方法
@author stephen
@version 100
/
public class SystemTool {
/
获取当前 *** 作系统名称
return *** 作系统名称 例如:windows xp,linux 等
/
public static String getOSName() {
return SystemgetProperty("osname")toLowerCase();
}
/
获取unix网卡的mac地址
非windows的系统默认调用本方法获取如果有特殊系统请继续扩充新的取mac地址方法
@return mac地址
/
public static String getUnixMACAddress() {
String mac = null;
BufferedReader bufferedReader = null;
Process process = null;
try {
process = RuntimegetRuntime()exec("ifconfig eth0");// linux下的命令,一般取eth0作为本地主网卡 显示信息中包含有mac地址信息
bufferedReader = new BufferedReader(new InputStreamReader(process
getInputStream()));
String line = null;
int index = -1;
while ((line = bufferedReaderreadLine()) != null) {
index = linetoLowerCase()indexOf("hwaddr");// 寻找标示字符串[hwaddr]
if (index >= 0) {// 找到了
mac = linesubstring(index +"hwaddr"length()+ 1)trim();// 取出mac地址并去除2边空格
break;
}
}
} catch (IOException e) {
eprintStackTrace();
} finally {
try {
if (bufferedReader != null) {
bufferedReaderclose();
}
} catch (IOException e1) {
e1printStackTrace();
}
bufferedReader = null;
process = null;
}
return mac;
}
/
获取widnows网卡的mac地址
@return mac地址
/
public static String getWindowsMACAddress() {
String mac = null;
BufferedReader bufferedReader = null;
Process process = null;
try {
process = RuntimegetRuntime()exec("ipconfig /all");// windows下的命令,显示信息中包含有mac地址信息
bufferedReader = new BufferedReader(new InputStreamReader(process
getInputStream()));
String line = null;
int index = -1;
while ((line = bufferedReaderreadLine()) != null) {
index = linetoLowerCase()indexOf("physical address");// 寻找标示字符串[physical address]
if (index >= 0) {// 找到了
index = lineindexOf(":");// 寻找":"的位置
if (index>=0) {
mac = linesubstring(index + 1)trim();// 取出mac地址并去除2边空格
}
break;
}
}
} catch (IOException e) {
eprintStackTrace();
} finally {
try {
if (bufferedReader != null) {
bufferedReaderclose();
}
} catch (IOException e1) {
e1printStackTrace();
}
bufferedReader = null;
process = null;
}
return mac;
}
/
测试用的main方法
@param argc
运行参数
/
public static void main(String[] argc) {
String os = getOSName();
Systemoutprintln(os);
if(osstartsWith("windows")){
//本地是windows
String mac = getWindowsMACAddress();
Systemoutprintln(mac);
}else{
//本地是非windows系统 一般就是unix
String mac = getUnixMACAddress();
Systemoutprintln(mac);
}
}
}
-------------------------------------------------------------------------
本程序可以正确获得本机IP地址和网卡"eth0"的MAC地址,已经在windowsXP和ubuntu-Linux上测试过
(注意:如果有多块网卡,可能出错)
下面给出代码:
import javanet;import javautil;
public class Test { public static void main(String[] args) { Test t = new Test(); Systemoutprintln(tgetLocalIP()); Systemoutprintln(tgetMacAddr()); }
public String getMacAddr() { String MacAddr = ""; String str = ""; try { NetworkInterface NIC = NetworkInterfacegetByName("eth0"); byte[] buf = NICgetHardwareAddress(); for (int i = 0; i < buflength; i++) { str = str + byteHEX(buf[i]); } MacAddr = strtoUpperCase(); } catch (SocketException e) { eprintStackTrace(); Systemexit(-1); } return MacAddr; }
public String getLocalIP() { String ip = ""; try { Enumeration<> e1 = (Enumeration<>) NetworkInterface getNetworkInterfaces(); while (e1hasMoreElements()) { NetworkInterface ni = (NetworkInterface) e1nextElement(); if (!nigetName()equals("eth0")) { continue; } else { Enumeration<> e2 = nigetInetAddresses(); while (e2hasMoreElements()) { InetAddress ia = (InetAddress) e2nextElement(); if (ia instanceof Inet6Address) continue; ip = iagetHostAddress(); } break; } } } catch (SocketException e) { eprintStackTrace(); Systemexit(-1); } return ip; }
/ 一个将字节转化为十六进制ASSIC码的函数 / public static String byteHEX(byte ib) { char[] Digit = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' }; char[] ob = new char[2]; ob[0] = Digit[(ib >>> 4) & 0X0F]; ob[1] = Digit[ib & 0X0F]; String s = new String(ob); return s; }}
以上就是关于linux 下能查询ssh登陆的远程客户端IP,mac地址码var/log/下日志好像只有当月的,是人为删除了嘛全部的内容,包括:linux 下能查询ssh登陆的远程客户端IP,mac地址码var/log/下日志好像只有当月的,是人为删除了嘛、MAC地址查询 Linux/Unix *** 作系统mac地址怎么查、Windows或Linux下如何查看网卡MAC地址等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)