sigar 0.7.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (66) hide show
  1. data/README +2 -0
  2. data/Rakefile +105 -0
  3. data/bindings/SigarBuild.pm +310 -0
  4. data/bindings/SigarWrapper.pm +2978 -0
  5. data/bindings/ruby/examples/arp.rb +24 -0
  6. data/bindings/ruby/examples/cpu_info.rb +35 -0
  7. data/bindings/ruby/examples/df.rb +49 -0
  8. data/bindings/ruby/examples/free.rb +36 -0
  9. data/bindings/ruby/examples/ifconfig.rb +101 -0
  10. data/bindings/ruby/examples/logging.rb +58 -0
  11. data/bindings/ruby/examples/net_info.rb +31 -0
  12. data/bindings/ruby/examples/netstat.rb +71 -0
  13. data/bindings/ruby/examples/pargs.rb +35 -0
  14. data/bindings/ruby/examples/penv.rb +31 -0
  15. data/bindings/ruby/examples/route.rb +48 -0
  16. data/bindings/ruby/examples/version.rb +40 -0
  17. data/bindings/ruby/examples/who.rb +30 -0
  18. data/bindings/ruby/extconf.rb +128 -0
  19. data/bindings/ruby/rbsigar.c +888 -0
  20. data/bindings/ruby/test/cpu_test.rb +40 -0
  21. data/bindings/ruby/test/file_system_test.rb +43 -0
  22. data/bindings/ruby/test/helper.rb +57 -0
  23. data/bindings/ruby/test/loadavg_test.rb +30 -0
  24. data/bindings/ruby/test/mem_test.rb +45 -0
  25. data/bindings/ruby/test/swap_test.rb +36 -0
  26. data/bindings/ruby/test/uptime_test.rb +26 -0
  27. data/include/sigar.h +939 -0
  28. data/include/sigar_fileinfo.h +157 -0
  29. data/include/sigar_format.h +65 -0
  30. data/include/sigar_getline.h +18 -0
  31. data/include/sigar_log.h +80 -0
  32. data/include/sigar_private.h +422 -0
  33. data/include/sigar_ptql.h +53 -0
  34. data/include/sigar_util.h +191 -0
  35. data/src/os/aix/aix_sigar.c +2151 -0
  36. data/src/os/aix/sigar_os.h +73 -0
  37. data/src/os/darwin/Info.plist.in +27 -0
  38. data/src/os/darwin/darwin_sigar.c +3709 -0
  39. data/src/os/darwin/sigar_os.h +80 -0
  40. data/src/os/hpux/hpux_sigar.c +1342 -0
  41. data/src/os/hpux/sigar_os.h +49 -0
  42. data/src/os/linux/linux_sigar.c +2782 -0
  43. data/src/os/linux/sigar_os.h +82 -0
  44. data/src/os/solaris/get_mib2.c +321 -0
  45. data/src/os/solaris/get_mib2.h +127 -0
  46. data/src/os/solaris/kstats.c +181 -0
  47. data/src/os/solaris/procfs.c +97 -0
  48. data/src/os/solaris/sigar_os.h +224 -0
  49. data/src/os/solaris/solaris_sigar.c +2717 -0
  50. data/src/os/win32/peb.c +212 -0
  51. data/src/os/win32/sigar.rc.in +40 -0
  52. data/src/os/win32/sigar_os.h +653 -0
  53. data/src/os/win32/sigar_pdh.h +47 -0
  54. data/src/os/win32/win32_sigar.c +3911 -0
  55. data/src/sigar.c +2428 -0
  56. data/src/sigar_cache.c +179 -0
  57. data/src/sigar_fileinfo.c +815 -0
  58. data/src/sigar_format.c +696 -0
  59. data/src/sigar_getline.c +1849 -0
  60. data/src/sigar_ptql.c +1967 -0
  61. data/src/sigar_signal.c +216 -0
  62. data/src/sigar_util.c +1060 -0
  63. data/src/sigar_version.c.in +22 -0
  64. data/src/sigar_version_autoconf.c.in +22 -0
  65. data/version.properties +11 -0
  66. metadata +131 -0
@@ -0,0 +1,24 @@
1
+ #
2
+ # Copyright (c) 2010 VMware, Inc.
3
+ #
4
+ # Licensed under the Apache License, Version 2.0 (the "License");
5
+ # you may not use this file except in compliance with the License.
6
+ # You may obtain a copy of the License at
7
+ #
8
+ # http://www.apache.org/licenses/LICENSE-2.0
9
+ #
10
+ # Unless required by applicable law or agreed to in writing, software
11
+ # distributed under the License is distributed on an "AS IS" BASIS,
12
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ # See the License for the specific language governing permissions and
14
+ # limitations under the License.
15
+ #
16
+
17
+ require 'sigar'
18
+
19
+ Sigar.new.arp_list.each do |arp|
20
+ host = "?" #XXX
21
+ puts host + " " +
22
+ "(" + arp.address + ")" + " at " + arp.hwaddr + " " +
23
+ "[" + arp.type + "]" + " on " + arp.ifname
24
+ end
@@ -0,0 +1,35 @@
1
+ #
2
+ # Copyright (c) 2007 Hyperic, Inc.
3
+ # Copyright (c) 2009-2010 VMware, Inc.
4
+ #
5
+ # Licensed under the Apache License, Version 2.0 (the "License");
6
+ # you may not use this file except in compliance with the License.
7
+ # You may obtain a copy of the License at
8
+ #
9
+ # http://www.apache.org/licenses/LICENSE-2.0
10
+ #
11
+ # Unless required by applicable law or agreed to in writing, software
12
+ # distributed under the License is distributed on an "AS IS" BASIS,
13
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ # See the License for the specific language governing permissions and
15
+ # limitations under the License.
16
+ #
17
+
18
+ require 'sigar'
19
+
20
+ sigar = Sigar.new
21
+
22
+ infos = sigar.cpu_info_list
23
+
24
+ num = infos.length
25
+
26
+ puts num.to_s + " total CPUs.."
27
+
28
+ infos.each do |info|
29
+ puts "Vendor........" + info.vendor
30
+ puts "Model........." + info.model
31
+ puts "Current Mhz..." + info.mhz.to_s
32
+ puts "Maximum Mhz..." + info.mhz_max.to_s
33
+ puts "Minimum Mhz..." + info.mhz_min.to_s
34
+ puts "Cache size...." + info.cache_size.to_s
35
+ end
@@ -0,0 +1,49 @@
1
+ #
2
+ # Copyright (c) 2007, 2009 Hyperic, Inc.
3
+ # Copyright (c) 2010 VMware, Inc.
4
+ #
5
+ # Licensed under the Apache License, Version 2.0 (the "License");
6
+ # you may not use this file except in compliance with the License.
7
+ # You may obtain a copy of the License at
8
+ #
9
+ # http://www.apache.org/licenses/LICENSE-2.0
10
+ #
11
+ # Unless required by applicable law or agreed to in writing, software
12
+ # distributed under the License is distributed on an "AS IS" BASIS,
13
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ # See the License for the specific language governing permissions and
15
+ # limitations under the License.
16
+ #
17
+
18
+ require 'sigar'
19
+
20
+ def format_size(size)
21
+ return Sigar.format_size(size * 1024)
22
+ end
23
+
24
+ sigar = Sigar.new
25
+ fslist = sigar.file_system_list
26
+
27
+ puts "Filesystem\tSize\tUsed\tAvail\tUse%\tMounted on\tType\n"
28
+
29
+ fslist.each do |fs|
30
+ dir_name = fs.dir_name
31
+ begin
32
+ usage = sigar.file_system_usage(dir_name)
33
+ total = usage.total
34
+ used = total - usage.free
35
+ avail = usage.avail
36
+ pct = usage.use_percent * 100
37
+ rescue Exception => e
38
+ #e.g. floppy or cdrom drive
39
+ used = avail = total = pct = 0;
40
+ end
41
+
42
+ puts fs.dev_name + "\t" +
43
+ format_size(total) + "\t" +
44
+ format_size(used) + "\t" +
45
+ format_size(avail) + "\t" +
46
+ (pct == 0.0 ? '-' : pct.to_s) + "\t" +
47
+ dir_name + "\t" +
48
+ fs.sys_type_name + "/" + fs.type_name
49
+ end
@@ -0,0 +1,36 @@
1
+ #
2
+ # Copyright (c) 2007 Hyperic, Inc.
3
+ # Copyright (c) 2010 VMware, Inc.
4
+ #
5
+ # Licensed under the Apache License, Version 2.0 (the "License");
6
+ # you may not use this file except in compliance with the License.
7
+ # You may obtain a copy of the License at
8
+ #
9
+ # http://www.apache.org/licenses/LICENSE-2.0
10
+ #
11
+ # Unless required by applicable law or agreed to in writing, software
12
+ # distributed under the License is distributed on an "AS IS" BASIS,
13
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ # See the License for the specific language governing permissions and
15
+ # limitations under the License.
16
+ #
17
+
18
+ require 'sigar'
19
+
20
+ sigar = Sigar.new
21
+ mem = sigar.mem
22
+ swap = sigar.swap
23
+
24
+ puts "\tTotal\tUsed\tFree"
25
+
26
+ puts "Mem: " +
27
+ (mem.total / 1024).to_s + "\t" +
28
+ (mem.used / 1024).to_s + "\t" +
29
+ (mem.free/ 1024).to_s
30
+
31
+ puts "Swap: " +
32
+ (swap.total / 1024).to_s + "\t" +
33
+ (swap.used / 1024).to_s + "\t" +
34
+ (swap.free/ 1024).to_s
35
+
36
+ puts "RAM: " + mem.ram.to_s + "MB";
@@ -0,0 +1,101 @@
1
+ #
2
+ # Copyright (c) 2007 Hyperic, Inc.
3
+ # Copyright (c) 2009 SpringSource, Inc.
4
+ # Copyright (c) 2010 VMware, Inc.
5
+ #
6
+ # Licensed under the Apache License, Version 2.0 (the "License");
7
+ # you may not use this file except in compliance with the License.
8
+ # You may obtain a copy of the License at
9
+ #
10
+ # http://www.apache.org/licenses/LICENSE-2.0
11
+ #
12
+ # Unless required by applicable law or agreed to in writing, software
13
+ # distributed under the License is distributed on an "AS IS" BASIS,
14
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+ # See the License for the specific language governing permissions and
16
+ # limitations under the License.
17
+ #
18
+
19
+ require 'sigar'
20
+
21
+ sigar = Sigar.new
22
+ iflist = sigar.net_interface_list
23
+
24
+ iflist.each do |ifname|
25
+ ifconfig = sigar.net_interface_config(ifname)
26
+ flags = ifconfig.flags
27
+ encap = ifconfig.type
28
+
29
+ if (flags & Sigar::IFF_UP) == 0
30
+ next
31
+ end
32
+
33
+ hwaddr = ifconfig.hwaddr
34
+ if hwaddr == Sigar::NULL_HWADDR
35
+ hwaddr = ""
36
+ else
37
+ hwaddr = " HWaddr " + hwaddr
38
+ end
39
+
40
+ puts ifname + "\t" + "Link encap:" + encap + hwaddr
41
+
42
+ if (flags & Sigar::IFF_POINTOPOINT) != 0
43
+ ptp = " P-t-P:" + ifconfig.destination
44
+ else
45
+ ptp = ""
46
+ end
47
+
48
+ if (flags & Sigar::IFF_BROADCAST) != 0
49
+ bcast = " Bcast:" + ifconfig.broadcast
50
+ else
51
+ bcast = ""
52
+ end
53
+
54
+ address = ifconfig.address
55
+ if address != "0.0.0.0"
56
+ puts "\t" + "inet addr:" + address +
57
+ ptp + bcast + " Mask:" + ifconfig.netmask
58
+ end
59
+
60
+ if ifconfig.prefix6_length != 0
61
+ puts "\t" + "inet6 addr: " + ifconfig.address6 + "/" +
62
+ ifconfig.prefix6_length.to_s + " Scope:" + Sigar.net_scope_to_s(ifconfig.scope6)
63
+ end
64
+
65
+ puts "\t" +
66
+ Sigar.net_interface_flags_to_s(flags) +
67
+ " MTU:" + ifconfig.mtu.to_s +
68
+ " Metric:" + ifconfig.metric.to_s
69
+
70
+ if (!ifname.include?(":"))
71
+ ifstat = sigar.net_interface_stat(ifname)
72
+ puts "\t" +
73
+ "RX packets:" + ifstat.rx_packets.to_s +
74
+ " errors:" + ifstat.rx_errors.to_s +
75
+ " dropped:" + ifstat.rx_dropped.to_s +
76
+ " overruns:" + ifstat.rx_overruns.to_s +
77
+ " frame:" + ifstat.rx_frame.to_s
78
+
79
+ puts "\t" +
80
+ "TX packets:" + ifstat.tx_packets.to_s +
81
+ " errors:" + ifstat.tx_errors.to_s +
82
+ " dropped:" + ifstat.tx_dropped.to_s +
83
+ " overruns:" + ifstat.tx_overruns.to_s +
84
+ " carrier:" + ifstat.tx_carrier.to_s
85
+
86
+ puts "\t" + "collisions:" + ifstat.tx_collisions.to_s +
87
+ " txqueuelen:" + ifconfig.tx_queue_len.to_s
88
+
89
+ rx_bytes = ifstat.rx_bytes
90
+ tx_bytes = ifstat.tx_bytes
91
+
92
+ puts "\t" +
93
+ "RX bytes:" + rx_bytes.to_s +
94
+ " (" + Sigar.format_size(rx_bytes) + ")" +
95
+ " " +
96
+ "TX bytes:" + tx_bytes.to_s +
97
+ " (" + Sigar.format_size(tx_bytes) + ")" + "\n"
98
+ end
99
+
100
+ puts "\n"
101
+ end
@@ -0,0 +1,58 @@
1
+ #
2
+ # Copyright (c) 2009 SpringSource, Inc.
3
+ # Copyright (c) 2010 VMware, Inc.
4
+ #
5
+ # Licensed under the Apache License, Version 2.0 (the "License");
6
+ # you may not use this file except in compliance with the License.
7
+ # You may obtain a copy of the License at
8
+ #
9
+ # http://www.apache.org/licenses/LICENSE-2.0
10
+ #
11
+ # Unless required by applicable law or agreed to in writing, software
12
+ # distributed under the License is distributed on an "AS IS" BASIS,
13
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ # See the License for the specific language governing permissions and
15
+ # limitations under the License.
16
+ #
17
+
18
+ # Example illustrating the use of the optional logger.
19
+
20
+ require 'sigar'
21
+ require 'logger'
22
+
23
+ sigar = Sigar.new
24
+ sigar.log_level = Sigar::LOG_DEBUG
25
+
26
+ logger = Logger.new(STDERR)
27
+ logger.datetime_format = "%H:%M:%S"
28
+
29
+ # Call something that has DEBUG level logging.
30
+ fslist = sigar.file_system_list
31
+
32
+ # cache data
33
+ fslist.each do |fs|
34
+ dir_name = fs.dir_name
35
+ usage = sigar.file_system_usage(dir_name)
36
+ end
37
+
38
+ puts "Calling file_system_usage() for each filesystem"
39
+
40
+ puts "\nwith Logger:"
41
+
42
+ sigar.logger = logger
43
+
44
+ fslist.each do |fs|
45
+ dir_name = fs.dir_name
46
+ usage = sigar.file_system_usage(dir_name)
47
+ end
48
+
49
+ puts "\nwith Proc:"
50
+
51
+ sigar.logger = Proc.new do |level, msg|
52
+ puts "Level #{level}: #{msg}"
53
+ end
54
+
55
+ fslist.each do |fs|
56
+ dir_name = fs.dir_name
57
+ usage = sigar.file_system_usage(dir_name)
58
+ end
@@ -0,0 +1,31 @@
1
+ #
2
+ # Copyright (c) 2009-2010 VMware, Inc.
3
+ #
4
+ # Licensed under the Apache License, Version 2.0 (the "License");
5
+ # you may not use this file except in compliance with the License.
6
+ # You may obtain a copy of the License at
7
+ #
8
+ # http://www.apache.org/licenses/LICENSE-2.0
9
+ #
10
+ # Unless required by applicable law or agreed to in writing, software
11
+ # distributed under the License is distributed on an "AS IS" BASIS,
12
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ # See the License for the specific language governing permissions and
14
+ # limitations under the License.
15
+ #
16
+
17
+ # Example illustrating the collecting of network information.
18
+
19
+ require 'sigar'
20
+
21
+ sigar = Sigar.new
22
+
23
+ ninfo = sigar.net_info
24
+
25
+ puts "Hostname: " + ninfo.host_name
26
+ puts "Domain Name: " + ninfo.domain_name
27
+ puts "FQDN: " + sigar.fqdn
28
+ puts "Default gateway: " + ninfo.default_gateway
29
+ puts "Default gateway interface: " + ninfo.default_gateway_interface
30
+ puts "Primary DNS: " + ninfo.primary_dns
31
+ puts "Secondary DNS: " + ninfo.secondary_dns
@@ -0,0 +1,71 @@
1
+ #
2
+ # Copyright (c) 2007 Hyperic, Inc.
3
+ # Copyright (c) 2010 VMware, Inc.
4
+ #
5
+ # Licensed under the Apache License, Version 2.0 (the "License");
6
+ # you may not use this file except in compliance with the License.
7
+ # You may obtain a copy of the License at
8
+ #
9
+ # http://www.apache.org/licenses/LICENSE-2.0
10
+ #
11
+ # Unless required by applicable law or agreed to in writing, software
12
+ # distributed under the License is distributed on an "AS IS" BASIS,
13
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ # See the License for the specific language governing permissions and
15
+ # limitations under the License.
16
+ #
17
+
18
+ require 'sigar'
19
+ require 'socket'
20
+
21
+ #XXX this example is incomplete wrt:
22
+ #../../java/src/org/hyperic/sigar/cmd/Netstat.java
23
+
24
+ is_numeric = false
25
+ flags = Sigar::NETCONN_CLIENT|Sigar::NETCONN_SERVER
26
+ flags |= Sigar::NETCONN_TCP
27
+
28
+ def format_port(sigar, proto, port, is_numeric)
29
+ if port == 0
30
+ return "*"
31
+ end
32
+ if !is_numeric
33
+ service = sigar.net_services_name(proto, port)
34
+ if service != nil
35
+ return service
36
+ end
37
+ end
38
+ port.to_s
39
+ end
40
+
41
+ def format_address(sigar, proto, ip, portnum, is_numeric)
42
+ port = format_port(sigar, proto, portnum, is_numeric)
43
+ address = ""
44
+ if ip == "0.0.0.0" || ip == "::"
45
+ address = "*"
46
+ elsif is_numeric
47
+ address = ip.to_s
48
+ else
49
+ begin
50
+ name = Socket.gethostbyname(ip)
51
+ address = name[0]
52
+ rescue SocketError
53
+ address = ip.to_s
54
+ end
55
+ end
56
+ return address + ":" + port
57
+ end
58
+
59
+ sigar = Sigar.new
60
+
61
+ connections = sigar.net_connection_list(flags)
62
+ puts "Proto\tLocal Address\tForeign Address\tState"
63
+
64
+ connections.each do |conn|
65
+ proto = Sigar.net_connection_type_to_s(conn.type)
66
+ state = Sigar.net_connection_state_to_s(conn.state)
67
+ local = format_address(sigar, conn.type, conn.local_address, conn.local_port, is_numeric)
68
+ remote = format_address(sigar, conn.type, conn.remote_address, conn.remote_port, is_numeric)
69
+ puts proto + "\t" + local + "\t" + remote + "\t" + state
70
+ end
71
+
@@ -0,0 +1,35 @@
1
+ #
2
+ # Copyright (c) 2007, 2009 Hyperic, Inc.
3
+ # Copyright (c) 2010 VMware, Inc.
4
+ #
5
+ # Licensed under the Apache License, Version 2.0 (the "License");
6
+ # you may not use this file except in compliance with the License.
7
+ # You may obtain a copy of the License at
8
+ #
9
+ # http://www.apache.org/licenses/LICENSE-2.0
10
+ #
11
+ # Unless required by applicable law or agreed to in writing, software
12
+ # distributed under the License is distributed on an "AS IS" BASIS,
13
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ # See the License for the specific language governing permissions and
15
+ # limitations under the License.
16
+ #
17
+
18
+ require 'sigar'
19
+
20
+ def output(sigar, pid)
21
+ args = sigar.proc_args(pid)
22
+ exe = sigar.proc_exe(pid);
23
+ puts "exe=" + exe.name
24
+ puts "cwd=" + exe.cwd
25
+
26
+ args.each do |arg|
27
+ puts " " + "=>" + arg + "<="
28
+ end
29
+ end
30
+
31
+ sigar = Sigar.new
32
+
33
+ ARGV.each do |pid|
34
+ output(sigar, pid)
35
+ end