首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 开源软件 >

java怎么实现系统监控、系统信息收集、sigar开源API的学习(转)

2012-10-07 
java如何实现系统监控、系统信息收集、sigar开源API的学习(转)转自:http://liningjustsoso.iteye.com/blog/1

java如何实现系统监控、系统信息收集、sigar开源API的学习(转)
转自:http://liningjustsoso.iteye.com/blog/1254584首先给大家介绍一个开源工具Sigar?
官网:http://sigar.hyperic.com/?
API:http://www.hyperic.com/support/docs/sigar/index-all.html(由于是英文的,英文不好的可以用谷歌浏览器的翻译功能,直接转换为简体中文进行阅读)?

Sigar(System Information Gatherer And Reporter),是一个开源的工具,提供了跨平台的系统信息收集的API,由C语言实现的。可以收集的信息包括:?

1, CPU信息,包括基本信息(vendor、model、mhz、cacheSize)和统计信息(user、sys、idle、nice、wait)?

2, 文件系统信息,包括Filesystem、Size、Used、Avail、Use%、Type?

3, 事件信息,类似Service Control Manager?

4, 内存信息,物理内存和交换内存的总数、使用数、剩余数;RAM的大小?

5, 网络信息,包括网络接口信息和网络路由信息?

6, 进程信息,包括每个进程的内存、CPU占用数、状态、参数、句柄?

7, IO信息,包括IO的状态,读写大小等?

8, 服务状态信息?

9, 系统信息,包括操作系统版本,系统资源限制情况,系统运行时间以及负载,JAVA的版本信息等.?

Sigar在Java中的使用:?
开发时将附件中sigar.rar中的所有文件及jar包放在工程的lib文件夹下。?

Java代码??java怎么实现系统监控、系统信息收集、sigar开源API的学习(转)

  1. package?com.test_sigar;??
  2. ??
  3. import?java.net.InetAddress;??
  4. import?java.net.UnknownHostException;??
  5. import?java.text.DecimalFormat;??
  6. ??
  7. import?org.hyperic.sigar.CpuInfo;??
  8. import?org.hyperic.sigar.CpuPerc;??
  9. import?org.hyperic.sigar.FileSystem;??
  10. import?org.hyperic.sigar.FileSystemUsage;??
  11. import?org.hyperic.sigar.Mem;??
  12. import?org.hyperic.sigar.NetFlags;??
  13. import?org.hyperic.sigar.NetInterfaceConfig;??
  14. import?org.hyperic.sigar.NetInterfaceStat;??
  15. import?org.hyperic.sigar.OperatingSystem;??
  16. import?org.hyperic.sigar.Sigar;??
  17. import?org.hyperic.sigar.SigarException;??
  18. import?org.hyperic.sigar.SigarNotImplementedException;??
  19. import?org.hyperic.sigar.Swap;??
  20. ??
  21. public?class?SysInfo?{??
  22. ??
  23. ????public?static?void?main(String?[]?args)?throws?Exception{??
  24. ????????SysInfo?s?=new?SysInfo();??
  25. ????????System.out.println("CPU个数:"+s.getCpuCount());??
  26. ????????s.getCpuTotal();??
  27. ????????s.testCpuPerc();??
  28. ????????s.getPhysicalMemory();??
  29. ????????s.testWho();??
  30. ????????s.testFileSystemInfo();??
  31. ????????s.testGetOSInfo();??
  32. ????}??
  33. ????/**?
  34. ?????*?1.CPU资源信息?
  35. ?????*/??
  36. ??????
  37. ????//?a)CPU数量(单位:个)??
  38. ????public?static?int?getCpuCount()?throws?SigarException?{??
  39. ????????Sigar?sigar?=?new?Sigar();??
  40. ????????try?{??
  41. ????????????return?sigar.getCpuInfoList().length;??
  42. ????????}?finally?{??
  43. ????????????sigar.close();??
  44. ????????}??
  45. ????}??
  46. ??
  47. ????//?b)CPU的总量(单位:HZ)及CPU的相关信息??
  48. ????public?void?getCpuTotal()?{??
  49. ????????Sigar?sigar?=?new?Sigar();??
  50. ????????CpuInfo[]?infos;??
  51. ????????try?{??
  52. ????????????infos?=?sigar.getCpuInfoList();??
  53. ????????????for?(int?i?=?0;?i?<?infos.length;?i++)?{//?不管是单块CPU还是多CPU都适用??
  54. ????????????????CpuInfo?info?=?infos[i];??
  55. ????????????????System.out.println("CPU的总量:"?+?info.getMhz());//?CPU的总量MHz??
  56. ????????????????System.out.println("获得CPU的卖主:"?+?info.getVendor());//?获得CPU的卖主,如:Intel??
  57. ????????????????System.out.println("CPU的类别:"?+?info.getModel());//?获得CPU的类别,如:Celeron??
  58. ????????????????System.out.println("缓冲存储器数量:"?+?info.getCacheSize());//?缓冲存储器数量??
  59. ????????????????System.out.println("**************");??
  60. ????????????}??
  61. ????????}?catch?(SigarException?e)?{??
  62. ????????????e.printStackTrace();??
  63. ????????}??
  64. ????}??
  65. ??
  66. ????//?c)CPU的用户使用量、系统使用剩余量、总的剩余量、总的使用占用量等(单位:100%)??
  67. ????public?void?testCpuPerc()?{??
  68. ????????Sigar?sigar?=?new?Sigar();??
  69. ????????//?方式一,主要是针对一块CPU的情况??
  70. ????????CpuPerc?cpu;??
  71. ????????try?{??
  72. ????????????cpu?=?sigar.getCpuPerc();??
  73. ????????????printCpuPerc(cpu);??
  74. ????????}?catch?(SigarException?e)?{??
  75. ????????????e.printStackTrace();??
  76. ????????}??
  77. ????????//?方式二,不管是单块CPU还是多CPU都适用??
  78. ????????CpuPerc?cpuList[]?=?null;??
  79. ????????try?{??
  80. ????????????cpuList?=?sigar.getCpuPercList();??
  81. ????????}?catch?(SigarException?e)?{??
  82. ????????????e.printStackTrace();??
  83. ????????????return;??
  84. ????????}??
  85. ????????for?(int?i?=?0;?i?<?cpuList.length;?i++)?{??
  86. ????????????printCpuPerc(cpuList[i]);??
  87. ????????}??
  88. ????}??
  89. ??
  90. ????private?void?printCpuPerc(CpuPerc?cpu)?{??
  91. ????????System.out.println("用户使用率:"?+?CpuPerc.format(cpu.getUser()));//?用户使用率??
  92. ????????System.out.println("系统使用率:"?+?CpuPerc.format(cpu.getSys()));//?系统使用率??
  93. ????????System.out.println("当前等待率:"?+?CpuPerc.format(cpu.getWait()));//?当前等待率??
  94. ????????System.out.println("Nice?:"?+?CpuPerc.format(cpu.getNice()));//??
  95. ????????System.out.println("当前空闲率:"?+?CpuPerc.format(cpu.getIdle()));//?当前空闲率??
  96. ????????System.out.println("总的使用率:"?+?CpuPerc.format(cpu.getCombined()));//?总的使用率??
  97. ????????System.out.println("**************");??
  98. ????}??
  99. ??
  100. ????/**?
  101. ?????*?2.内存资源信息?
  102. ?????*?
  103. ?????*/??
  104. ??????
  105. ????public?void?getPhysicalMemory()?{??
  106. ????????//?a)物理内存信息??
  107. ????????DecimalFormat?df?=?new?DecimalFormat("#0.00");??
  108. ????????Sigar?sigar?=?new?Sigar();??
  109. ????????Mem?mem;??
  110. ????????try?{??
  111. ????????????mem?=?sigar.getMem();??
  112. ????????????//?内存总量??
  113. ????????????System.out.println("内存总量:"?+?df.format((float)mem.getTotal()?/?1024/1024/1024)?+?"G");??
  114. ????????????//?当前内存使用量??
  115. ????????????System.out.println("当前内存使用量:"?+?df.format((float)mem.getUsed()?/?1024/1024/1024)?+?"G");??
  116. ????????????//?当前内存剩余量??
  117. ????????????System.out.println("当前内存剩余量:"?+?df.format((float)mem.getFree()?/?1024/1024/1024)?+?"G");??
  118. ????????????//?b)系统页面文件交换区信息??
  119. ????????????Swap?swap?=?sigar.getSwap();??
  120. ????????????//?交换区总量??
  121. ????????????System.out.println("交换区总量:"?+?df.format((float)swap.getTotal()?/?1024/1024/1024)?+?"G");??
  122. ????????????//?当前交换区使用量??
  123. ????????????System.out.println("当前交换区使用量:"?+?df.format((float)swap.getUsed()?/?1024/1024/1024)?+?"G");??
  124. ????????????//?当前交换区剩余量??
  125. ????????????System.out.println("当前交换区剩余量:"?+?df.format((float)swap.getFree()?/?1024/1024/1024)?+?"G");??
  126. ????????}?catch?(SigarException?e)?{??
  127. ????????????e.printStackTrace();??
  128. ????????}??
  129. ????}??
  130. ??
  131. ????/**?
  132. ?????*?3.操作系统信息?
  133. ?????*??
  134. ?????*/??
  135. ??????
  136. ????//?a)取到当前操作系统的名称:??
  137. ????public?String?getPlatformName()?{??
  138. ????????String?hostname?=?"";??
  139. ????????try?{??
  140. ????????????hostname?=?InetAddress.getLocalHost().getHostName();??
  141. ????????}?catch?(Exception?exc)?{??
  142. ????????????Sigar?sigar?=?new?Sigar();??
  143. ????????????try?{??
  144. ????????????????hostname?=?sigar.getNetInfo().getHostName();??
  145. ????????????}?catch?(SigarException?e)?{??
  146. ????????????????hostname?=?"localhost.unknown";??
  147. ????????????}?finally?{??
  148. ????????????????sigar.close();??
  149. ????????????}??
  150. ????????}??
  151. ????????return?hostname;??
  152. ????}??
  153. ??
  154. ????//?b)取当前操作系统的信息??
  155. ????public?void?testGetOSInfo()?{??
  156. ????????OperatingSystem?OS?=?OperatingSystem.getInstance();??
  157. ????????//?操作系统内核类型如:?386、486、586等x86??
  158. ????????System.out.println("OS.getArch()?=?"?+?OS.getArch());??
  159. ????????System.out.println("OS.getCpuEndian()?=?"?+?OS.getCpuEndian());//??
  160. ????????System.out.println("OS.getDataModel()?=?"?+?OS.getDataModel());//??
  161. ????????//?系统描述??
  162. ????????System.out.println("OS.getDescription()?=?"?+?OS.getDescription());??
  163. ????????System.out.println("OS.getMachine()?=?"?+?OS.getMachine());//??
  164. ????????//?操作系统类型??
  165. ????????System.out.println("OS.getName()?=?"?+?OS.getName());??
  166. ????????System.out.println("OS.getPatchLevel()?=?"?+?OS.getPatchLevel());//??
  167. ????????//?操作系统的卖主??
  168. ????????System.out.println("OS.getVendor()?=?"?+?OS.getVendor());??
  169. ????????//?卖主名称??
  170. ????????System.out??
  171. ????????????????.println("OS.getVendorCodeName()?=?"?+?OS.getVendorCodeName());??
  172. ????????//?操作系统名称??
  173. ????????System.out.println("OS.getVendorName()?=?"?+?OS.getVendorName());??
  174. ????????//?操作系统卖主类型??
  175. ????????System.out.println("OS.getVendorVersion()?=?"?+?OS.getVendorVersion());??
  176. ????????//?操作系统的版本号??
  177. ????????System.out.println("OS.getVersion()?=?"?+?OS.getVersion());??
  178. ????}??
  179. ??
  180. ????//?c)取当前系统进程表中的用户信息??
  181. ????public?void?testWho()?{??
  182. ????????try?{??
  183. ????????????Sigar?sigar?=?new?Sigar();??
  184. ????????????org.hyperic.sigar.Who[]?who?=?sigar.getWhoList();??
  185. ????????????if?(who?!=?null?&&?who.length?>?0)?{??
  186. ????????????????for?(int?i?=?0;?i?<?who.length;?i++)?{??
  187. ????????????????????System.out.println("\n~~~~~~~~~"?+?String.valueOf(i)??
  188. ????????????????????????????+?"~~~~~~~~~");??
  189. ????????????????????org.hyperic.sigar.Who?_who?=?who[i];??
  190. ????????????????????System.out.println("获取设备getDevice()?=?"?+?_who.getDevice());??
  191. ????????????????????System.out.println("获得主机getHost()?=?"?+?_who.getHost());??
  192. ????????????????????System.out.println("获取的时间getTime()?=?"?+?_who.getTime());??
  193. ????????????????????//?当前系统进程表中的用户名??
  194. ????????????????????System.out.println("获取用户getUser()?=?"?+?_who.getUser());??
  195. ????????????????}??
  196. ????????????}??
  197. ????????}?catch?(SigarException?e)?{??
  198. ????????????e.printStackTrace();??
  199. ????????}??
  200. ????}??
  201. ??
  202. ????//?4.资源信息(主要是硬盘)??
  203. ????//?a)取硬盘已有的分区及其详细信息(通过sigar.getFileSystemList()来获得FileSystem列表对象,然后对其进行编历):??
  204. ????public?void?testFileSystemInfo()?throws?Exception?{??
  205. ????????Sigar?sigar?=?new?Sigar();??
  206. ????????FileSystem?fslist[]?=?sigar.getFileSystemList();??
  207. ????????DecimalFormat?df?=?new?DecimalFormat("#0.00");??
  208. ????????//?String?dir?=?System.getProperty("user.home");//?当前用户文件夹路径??
  209. ????????for?(int?i?=?0;?i?<?fslist.length;?i++)?{??
  210. ????????????System.out.println("\n~~~~~~~~~~"?+?i?+?"~~~~~~~~~~");??
  211. ????????????FileSystem?fs?=?fslist[i];??
  212. ????????????//?分区的盘符名称??
  213. ????????????System.out.println("fs.getDevName()?=?"?+?fs.getDevName());??
  214. ????????????//?分区的盘符名称??
  215. ????????????System.out.println("fs.getDirName()?=?"?+?fs.getDirName());??
  216. ????????????System.out.println("fs.getFlags()?=?"?+?fs.getFlags());//??
  217. ????????????//?文件系统类型,比如?FAT32、NTFS??
  218. ????????????System.out.println("fs.getSysTypeName()?=?"?+?fs.getSysTypeName());??
  219. ????????????//?文件系统类型名,比如本地硬盘、光驱、网络文件系统等??
  220. ????????????System.out.println("fs.getTypeName()?=?"?+?fs.getTypeName());??
  221. ????????????//?文件系统类型??
  222. ????????????System.out.println("fs.getType()?=?"?+?fs.getType());??
  223. ????????????FileSystemUsage?usage?=?null;??
  224. ????????????try?{??
  225. ????????????????usage?=?sigar.getFileSystemUsage(fs.getDirName());??
  226. ????????????}?catch?(SigarException?e)?{??
  227. ????????????????if?(fs.getType()?==?2)??
  228. ????????????????????throw?e;??
  229. ????????????????continue;??
  230. ????????????}??
  231. ????????????switch?(fs.getType())?{??
  232. ????????????case?0:?//?TYPE_UNKNOWN?:未知??
  233. ????????????????break;??
  234. ????????????case?1:?//?TYPE_NONE??
  235. ????????????????break;??
  236. ????????????case?2:?//?TYPE_LOCAL_DISK?:?本地硬盘??
  237. ????????????????//?文件系统总大小??
  238. ????????????????System.out.println("?Total?=?"?+?df.format((float)usage.getTotal()/1024/1024)?+?"G");??
  239. ????????????????//?文件系统剩余大小??
  240. ????????????????System.out.println("?Free?=?"?+?df.format((float)usage.getFree()/1024/1024)?+?"G");??
  241. ????????????????//?文件系统可用大小??
  242. ????????????????System.out.println("?Avail?=?"?+?df.format((float)usage.getAvail()/1024/1024)?+?"G");??
  243. ????????????????//?文件系统已经使用量??
  244. ????????????????System.out.println("?Used?=?"?+?df.format((float)usage.getUsed()/1024/1024)?+?"G");??
  245. ????????????????double?usePercent?=?usage.getUsePercent()?*?100D;??
  246. ????????????????//?文件系统资源的利用率??
  247. ????????????????System.out.println("?Usage?=?"?+?df.format(usePercent)?+?"%");??
  248. ????????????????break;??
  249. ????????????case?3://?TYPE_NETWORK?:网络??
  250. ????????????????break;??
  251. ????????????case?4://?TYPE_RAM_DISK?:闪存??
  252. ????????????????break;??
  253. ????????????case?5://?TYPE_CDROM?:光驱??
  254. ????????????????break;??
  255. ????????????case?6://?TYPE_SWAP?:页面交换??
  256. ????????????????break;??
  257. ????????????}??
  258. ????????????System.out.println("?DiskReads?=?"?+?usage.getDiskReads());??
  259. ????????????System.out.println("?DiskWrites?=?"?+?usage.getDiskWrites());??
  260. ????????}??
  261. ????????return;??
  262. ????}??
  263. ??
  264. ????//?5.网络信息??
  265. ????//?a)当前机器的正式域名??
  266. ????public?String?getFQDN()?{??
  267. ????????Sigar?sigar?=?null;??
  268. ????????try?{??
  269. ????????????return?InetAddress.getLocalHost().getCanonicalHostName();??
  270. ????????}?catch?(UnknownHostException?e)?{??
  271. ????????????try?{??
  272. ????????????????sigar?=?new?Sigar();??
  273. ????????????????return?sigar.getFQDN();??
  274. ????????????}?catch?(SigarException?ex)?{??
  275. ????????????????return?null;??
  276. ????????????}?finally?{??
  277. ????????????????sigar.close();??
  278. ????????????}??
  279. ????????}??
  280. ????}??
  281. ??
  282. ????//?b)取到当前机器的IP地址??
  283. ????public?String?getDefaultIpAddress()?{??
  284. ????????String?address?=?null;??
  285. ????????try?{??
  286. ????????????address?=?InetAddress.getLocalHost().getHostAddress();??
  287. ????????????//?没有出现异常而正常当取到的IP时,如果取到的不是网卡循回地址时就返回??
  288. ????????????//?否则再通过Sigar工具包中的方法来获取??
  289. ????????????if?(!NetFlags.LOOPBACK_ADDRESS.equals(address))?{??
  290. ????????????????return?address;??
  291. ????????????}??
  292. ????????}?catch?(UnknownHostException?e)?{??
  293. ????????????//?hostname?not?in?DNS?or?/etc/hosts??
  294. ????????}??
  295. ????????Sigar?sigar?=?new?Sigar();??
  296. ????????try?{??
  297. ????????????address?=?sigar.getNetInterfaceConfig().getAddress();??
  298. ????????}?catch?(SigarException?e)?{??
  299. ????????????address?=?NetFlags.LOOPBACK_ADDRESS;??
  300. ????????}?finally?{??
  301. ????????????sigar.close();??
  302. ????????}??
  303. ????????return?address;??
  304. ????}??
  305. ??
  306. ????//?c)取到当前机器的MAC地址??
  307. ????public?String?getMAC()?{??
  308. ????????Sigar?sigar?=?null;??
  309. ????????try?{??
  310. ????????????sigar?=?new?Sigar();??
  311. ????????????String[]?ifaces?=?sigar.getNetInterfaceList();??
  312. ????????????String?hwaddr?=?null;??
  313. ????????????for?(int?i?=?0;?i?<?ifaces.length;?i++)?{??
  314. ????????????????NetInterfaceConfig?cfg?=?sigar.getNetInterfaceConfig(ifaces[i]);??
  315. ????????????????if?(NetFlags.LOOPBACK_ADDRESS.equals(cfg.getAddress())??
  316. ????????????????????????||?(cfg.getFlags()?&?NetFlags.IFF_LOOPBACK)?!=?0??
  317. ????????????????????????||?NetFlags.NULL_HWADDR.equals(cfg.getHwaddr()))?{??
  318. ????????????????????continue;??
  319. ????????????????}??
  320. ????????????????/*?
  321. ?????????????????*?如果存在多张网卡包括虚拟机的网卡,默认只取第一张网卡的MAC地址,如果要返回所有的网卡(包括物理的和虚拟的)则可以修改方法的返回类型为数组或Collection?
  322. ?????????????????*?,通过在for循环里取到的多个MAC地址。?
  323. ?????????????????*/??
  324. ????????????????hwaddr?=?cfg.getHwaddr();??
  325. ????????????????break;??
  326. ????????????}??
  327. ????????????return?hwaddr?!=?null???hwaddr?:?null;??
  328. ????????}?catch?(Exception?e)?{??
  329. ????????????return?null;??
  330. ????????}?finally?{??
  331. ????????????if?(sigar?!=?null)??
  332. ????????????????sigar.close();??
  333. ????????}??
  334. ????}??
  335. ??
  336. ????//?d)获取网络流量等信息??
  337. ????public?void?testNetIfList()?throws?Exception?{??
  338. ????????Sigar?sigar?=?new?Sigar();??
  339. ????????String?ifNames[]?=?sigar.getNetInterfaceList();??
  340. ????????for?(int?i?=?0;?i?<?ifNames.length;?i++)?{??
  341. ????????????String?name?=?ifNames[i];??
  342. ????????????NetInterfaceConfig?ifconfig?=?sigar.getNetInterfaceConfig(name);??
  343. ????????????print("\nname?=?"?+?name);//?网络设备名??
  344. ????????????print("Address?=?"?+?ifconfig.getAddress());//?IP地址??
  345. ????????????print("Netmask?=?"?+?ifconfig.getNetmask());//?子网掩码??
  346. ????????????if?((ifconfig.getFlags()?&?1L)?<=?0L)?{??
  347. ????????????????print("!IFF_UP...skipping?getNetInterfaceStat");??
  348. ????????????????continue;??
  349. ????????????}??
  350. ????????????try?{??
  351. ????????????????NetInterfaceStat?ifstat?=?sigar.getNetInterfaceStat(name);??
  352. ????????????????print("RxPackets?=?"?+?ifstat.getRxPackets());//?接收的总包裹数??
  353. ????????????????print("TxPackets?=?"?+?ifstat.getTxPackets());//?发送的总包裹数??
  354. ????????????????print("RxBytes?=?"?+?ifstat.getRxBytes());//?接收到的总字节数??
  355. ????????????????print("TxBytes?=?"?+?ifstat.getTxBytes());//?发送的总字节数??
  356. ????????????????print("RxErrors?=?"?+?ifstat.getRxErrors());//?接收到的错误包数??
  357. ????????????????print("TxErrors?=?"?+?ifstat.getTxErrors());//?发送数据包时的错误数??
  358. ????????????????print("RxDropped?=?"?+?ifstat.getRxDropped());//?接收时丢弃的包数??
  359. ????????????????print("TxDropped?=?"?+?ifstat.getTxDropped());//?发送时丢弃的包数??
  360. ????????????}?catch?(SigarNotImplementedException?e)?{??
  361. ????????????}?catch?(SigarException?e)?{??
  362. ????????????????print(e.getMessage());??
  363. ????????????}??
  364. ????????}??
  365. ????}??
  366. ??
  367. ????void?print(String?msg)?{??
  368. ????????System.out.println(msg);??
  369. ????}??
  370. ??
  371. ????//?e)一些其他的信息??
  372. ????public?void?getEthernetInfo()?{??
  373. ????????Sigar?sigar?=?null;??
  374. ????????try?{??
  375. ????????????sigar?=?new?Sigar();??
  376. ????????????String[]?ifaces?=?sigar.getNetInterfaceList();??
  377. ????????????for?(int?i?=?0;?i?<?ifaces.length;?i++)?{??
  378. ????????????????NetInterfaceConfig?cfg?=?sigar.getNetInterfaceConfig(ifaces[i]);??
  379. ????????????????if?(NetFlags.LOOPBACK_ADDRESS.equals(cfg.getAddress())??
  380. ????????????????????????||?(cfg.getFlags()?&?NetFlags.IFF_LOOPBACK)?!=?0??
  381. ????????????????????????||?NetFlags.NULL_HWADDR.equals(cfg.getHwaddr()))?{??
  382. ????????????????????continue;??
  383. ????????????????}??
  384. ????????????????System.out.println("cfg.getAddress()?=?"?+?cfg.getAddress());//?IP地址??
  385. ????????????????System.out??
  386. ????????????????????????.println("cfg.getBroadcast()?=?"?+?cfg.getBroadcast());//?网关广播地址??
  387. ????????????????System.out.println("cfg.getHwaddr()?=?"?+?cfg.getHwaddr());//?网卡MAC地址??
  388. ????????????????System.out.println("cfg.getNetmask()?=?"?+?cfg.getNetmask());//?子网掩码??
  389. ????????????????System.out.println("cfg.getDescription()?=?"??
  390. ????????????????????????+?cfg.getDescription());//?网卡描述信息??
  391. ????????????????System.out.println("cfg.getType()?=?"?+?cfg.getType());//??
  392. ????????????????System.out.println("cfg.getDestination()?=?"??
  393. ????????????????????????+?cfg.getDestination());??
  394. ????????????????System.out.println("cfg.getFlags()?=?"?+?cfg.getFlags());//??
  395. ????????????????System.out.println("cfg.getMetric()?=?"?+?cfg.getMetric());??
  396. ????????????????System.out.println("cfg.getMtu()?=?"?+?cfg.getMtu());??
  397. ????????????????System.out.println("cfg.getName()?=?"?+?cfg.getName());??
  398. ????????????????System.out.println();??
  399. ????????????}??
  400. ????????}?catch?(Exception?e)?{??
  401. ????????????System.out.println("Error?while?creating?GUID"?+?e);??
  402. ????????}?finally?{??
  403. ????????????if?(sigar?!=?null)??
  404. ????????????????sigar.close();??
  405. ????????}??
  406. ????}??
  407. ??
  408. }??
  • sigar.rar?(1.2 MB)
  • 下载次数: 9<!--EndFragment--> 1 楼 plandu 2012-07-05   不错,我有个问题,怎么通过sigar获取CPU序列号、硬盘卷标号或序列号?

    我知道windows可以通过File类创建vbs临时文件获取,但是Linux始终没有合适的方法。

热点排行