我想要获取有关 AIX 上可用网络接口的所有信息。就像在linux上一样,我们可以从/sys/class/net
文件中获取它。 AIX 上有可以找到相关信息的文件吗?
我还尝试使用“/dev/kmem”文件访问它。我应该使用哪个结构来捕获网络接口的信息,就像我们使用 struct sysinfo 的系统信息一样。我正在尝试获取“ifnet”符号的信息。我可以从这里获取网络接口的MTU、硬件地址等信息吗?
答案1
在 AIX 上,此类内容保存在 ODM 中,但获取它的最简单方法是使用操作系统命令。对于网络接口,
ifconfig -a
以获得逻辑信息。 lscfg
,lsdev
以及lsattr
物理细节(或在某些情况下是伪物理)。
例子,
$ifconfig -a
en1: flags=5e080863,c0<UP,BROADCAST,NOTRAILERS,RUNNING,SIMPLEX,MULTICAST,GROUPRT,64BIT,CHECKSUM_OFFLOAD(INACTIVE),PSEG,LARGESEND,CHAIN>
inet 192.168.1.1 netmask 0xffffff00 broadcast 192.168.1.255
en0: flags=5e080822,c0<BROADCAST,NOTRAILERS,SIMPLEX,MULTICAST,GROUPRT,64BIT,CHECKSUM_OFFLOAD(ACTIVE),PSEG,LARGESEND,CHAIN>
en2: flags=4e080822,80<BROADCAST,NOTRAILERS,SIMPLEX,MULTICAST,GROUPRT,64BIT,PSEG,CHAIN>
en3: flags=4e080822,80<BROADCAST,NOTRAILERS,SIMPLEX,MULTICAST,GROUPRT,64BIT,PSEG,CHAIN>
lo0: flags=e08084b<UP,BROADCAST,LOOPBACK,RUNNING,SIMPLEX,MULTICAST,GROUPRT,64BIT>
inet 127.0.0.1 netmask 0xff000000 broadcast 127.255.255.255
inet6 ::1/0
tcp_sendspace 131072 tcp_recvspace 131072 rfc1323 1
$lsdev -Cl en1
en1 Available 10-78 Standard Ethernet Network Interface
$lscfg -vl ent1
ent1 P1-I5/E1 10/100 Mbps Ethernet PCI Adapter II (1410ff01)
10/100 Mbps Ethernet PCI Adapter II:
Part Number.................09P5023
FRU Number..................09P5023
EC Level....................H10971A
Manufacture ID..............YL1021
Network Address.............0002556AF7A9
ROM Level.(alterable).......SCU001
Product Specific.(Z0).......A5204205
Hardware Location Code......P1-I5/E1
$lsattr -El ent1
alt_addr 0x000000000000 Alternate Ethernet Address True
busintr 14 Bus interrupt level False
busmem 0xc0284000 Bus memory address False
chksum_offload yes Enable hardware transmit and receive checksum True
intr_priority 3 Interrupt priority False
ipsec_offload no IPsec Offload True
large_send yes Enable TCP Large Send Offload True
media_speed 100_Full_Duplex Media Speed True
poll_link no Enable Link Polling True
poll_link_timer 500 Time interval for Link Polling True
rom_mem 0xc0200000 ROM memory address False
rx_hog 1000 RX Descriptors per RX Interrupt True
rxbuf_pool_sz 1024 Receive Buffer Pool Size True
rxdesc_que_sz 512 RX Descriptor Queue Size True
slih_hog 10 Interrupt Events per Interrupt True
tx_preload 1520 TX Preload Value True
tx_que_sz 8192 Software TX Queue Size True
txdesc_que_sz 512 TX Descriptor Queue Size True
use_alt_addr no Enable Alternate Ethernet Address True
看来你想通过 API 来做到这一点。这原始设计制造商那么是最好的选择。我不知道这是最新的,但这是IBM ODM API 文档链接。
ODM 文件通常位于 中/etc/objrepos
,尽管很多文件是到/usr/lib/objrepos
.某些产品也可以在其他位置安装 ODM 文件,例如 HACMP(现在是 PowerHA System Mirror 等)。
答案2
ODM 是用户希望如何配置系统的方式。它在引导时由 mkdev、cfgmgr 等读取。但是 AIX 允许直接操作属性,就像 BSD 系统一样。例如,您可以ifconfig en0 10.10.10.10
像在 BSD 上一样更改接口的 IP 地址。 ODM 确实不是在这种情况下改变。或者,您可以通过chdev -l en0 -a netaddr=10.10.10.10
更新 ODM 和当前设置来执行此操作。或者,您可以向 chdev 添加 -P 标志并仅更新 ODM,以便它在重新启动时生效。
ODM 接口记录在标准 IBM pubs 中http://www-01.ibm.com/support/knowledgecenter/ssw_aix_61/com.ibm.aix.base/kc_welcome_61.htm。还记录了访问当前设置(如 ifconfig 或 netstat)的所有各种方法。 Stephens 书籍或其他 BSD 参考资料的副本可以帮助您访问当前设置。我相信 AIX 上有一些示例演示了如何使用 ODM。
答案3
只需ifconfig -a
命令即可给你答案。
您也可以尝试smitty tcpip
进一步分析和配置更改。