① linux下怎么获取当前能连上网的那个ip地址
一、Linux下为机器设置静态IP地址:
vim /etc/sysconfig/network-scripts/ifcfg-eth0
修改这个文件内容如下形式:
# Intel Corporation 82541GI Gigabit Ethernet Controller
DEVICE=eth0
BOOTPROTO=static #为静态的
HWADDR=00:15:17:B2:DC:B5
ONBOOT=yes
IPADDR=10.20.134.199 #这个是设置的静态IP地址
NETMASK=255.255.254.0
GATEWAY=10.20.134.1 #网关
修改后,需要重启网络是更改生效:
/etc/init.d/network restart
二、自动获取动态IP地址方式:
vim /etc/sysconfig/network-scripts/ifcfg-eth1
内容如下:
# Intel Corporation 82566DM-2 Gigabit Network Connection
DEVICE=eth1
BOOTPROTO=dhcp #动态获取IP
HWADDR=00:15:17:B2:DC:B7
ONBOOT=no
运行命令:
dhclient eth1
自动获取动态IP地址
可以通过:ifconfig查看分配的IP地址。
② 在linux下怎么获得 局域网各个ip,端口的流量速率和流量
Linux下是没有文件抄直接给你按进程记录流量信息的。你想要编程实现的话,办法是有的,只是比较麻烦。首先,你需要能截取流经网卡的数据包,这个可以通过libpcap来完成,其次你要完成的最重要的一步就是怎么根据端口号找到进程的pid。端口号通过截取的数据包可以获得,这个时候你要按行来解析/proc/net/tcp (如果要支持ipv6的话还要解析/proc/net/tcp6),这个文件记录了当前活跃的TCP连接情况,每一行代表一条连接,我们感兴趣的是其中的inode这一项,你得把inode的值解析出来保存。然后蛋疼的时候来了,接下来你得遍历所有的/proc/pid/fd文件,察看其中每一个文件描述符,如果发现内容为socket[xxxx]的,把xxxx截取出来,这个xxxx也是inode号,如果和你之前解析/proc/net/tcp的inode号吻合,恭喜你,这说明这个pid和那个tcp连接有关系,进而也就确定了端口号和pid的对应关系,也就知道了数据包和进程之间的对应关系了。