① 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的對應關系,也就知道了數據包和進程之間的對應關系了。