node-os-utils 1.3.7 → 2.0.1-beta.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (220) hide show
  1. package/README.md +1113 -237
  2. package/dist/.tsbuildinfo +1 -0
  3. package/dist/package.json +99 -0
  4. package/dist/src/adapters/adapter-factory.d.ts +87 -0
  5. package/dist/src/adapters/adapter-factory.d.ts.map +1 -0
  6. package/dist/src/adapters/adapter-factory.js +272 -0
  7. package/dist/src/adapters/adapter-factory.js.map +1 -0
  8. package/dist/src/adapters/linux-adapter.d.ts +199 -0
  9. package/dist/src/adapters/linux-adapter.d.ts.map +1 -0
  10. package/dist/src/adapters/linux-adapter.js +1308 -0
  11. package/dist/src/adapters/linux-adapter.js.map +1 -0
  12. package/dist/src/adapters/macos-adapter.d.ts +232 -0
  13. package/dist/src/adapters/macos-adapter.d.ts.map +1 -0
  14. package/dist/src/adapters/macos-adapter.js +1144 -0
  15. package/dist/src/adapters/macos-adapter.js.map +1 -0
  16. package/dist/src/adapters/windows-adapter.d.ts +124 -0
  17. package/dist/src/adapters/windows-adapter.d.ts.map +1 -0
  18. package/dist/src/adapters/windows-adapter.js +601 -0
  19. package/dist/src/adapters/windows-adapter.js.map +1 -0
  20. package/dist/src/core/base-monitor.d.ts +107 -0
  21. package/dist/src/core/base-monitor.d.ts.map +1 -0
  22. package/dist/src/core/base-monitor.js +312 -0
  23. package/dist/src/core/base-monitor.js.map +1 -0
  24. package/dist/src/core/cache-manager.d.ts +157 -0
  25. package/dist/src/core/cache-manager.d.ts.map +1 -0
  26. package/dist/src/core/cache-manager.js +315 -0
  27. package/dist/src/core/cache-manager.js.map +1 -0
  28. package/dist/src/core/platform-adapter.d.ts +197 -0
  29. package/dist/src/core/platform-adapter.d.ts.map +1 -0
  30. package/dist/src/core/platform-adapter.js +244 -0
  31. package/dist/src/core/platform-adapter.js.map +1 -0
  32. package/dist/src/index.d.ts +205 -0
  33. package/dist/src/index.d.ts.map +1 -0
  34. package/dist/src/index.js +315 -0
  35. package/dist/src/index.js.map +1 -0
  36. package/dist/src/monitors/cpu-monitor.d.ts +139 -0
  37. package/dist/src/monitors/cpu-monitor.d.ts.map +1 -0
  38. package/dist/src/monitors/cpu-monitor.js +433 -0
  39. package/dist/src/monitors/cpu-monitor.js.map +1 -0
  40. package/dist/src/monitors/disk-monitor.d.ts +136 -0
  41. package/dist/src/monitors/disk-monitor.d.ts.map +1 -0
  42. package/dist/src/monitors/disk-monitor.js +465 -0
  43. package/dist/src/monitors/disk-monitor.js.map +1 -0
  44. package/dist/src/monitors/memory-monitor.d.ts +136 -0
  45. package/dist/src/monitors/memory-monitor.d.ts.map +1 -0
  46. package/dist/src/monitors/memory-monitor.js +443 -0
  47. package/dist/src/monitors/memory-monitor.js.map +1 -0
  48. package/dist/src/monitors/network-monitor.d.ts +166 -0
  49. package/dist/src/monitors/network-monitor.d.ts.map +1 -0
  50. package/dist/src/monitors/network-monitor.js +586 -0
  51. package/dist/src/monitors/network-monitor.js.map +1 -0
  52. package/dist/src/monitors/process-monitor.d.ts +142 -0
  53. package/dist/src/monitors/process-monitor.d.ts.map +1 -0
  54. package/dist/src/monitors/process-monitor.js +460 -0
  55. package/dist/src/monitors/process-monitor.js.map +1 -0
  56. package/dist/src/monitors/system-monitor.d.ts +173 -0
  57. package/dist/src/monitors/system-monitor.d.ts.map +1 -0
  58. package/dist/src/monitors/system-monitor.js +592 -0
  59. package/dist/src/monitors/system-monitor.js.map +1 -0
  60. package/dist/src/types/common.d.ts +135 -0
  61. package/dist/src/types/common.d.ts.map +1 -0
  62. package/dist/src/types/common.js +141 -0
  63. package/dist/src/types/common.js.map +1 -0
  64. package/dist/src/types/config.d.ts +288 -0
  65. package/dist/src/types/config.d.ts.map +1 -0
  66. package/dist/src/types/config.js +3 -0
  67. package/dist/src/types/config.js.map +1 -0
  68. package/dist/src/types/errors.d.ts +40 -0
  69. package/dist/src/types/errors.d.ts.map +1 -0
  70. package/dist/src/types/errors.js +67 -0
  71. package/dist/src/types/errors.js.map +1 -0
  72. package/dist/src/types/index.d.ts +16 -0
  73. package/dist/src/types/index.d.ts.map +1 -0
  74. package/dist/src/types/index.js +36 -0
  75. package/dist/src/types/index.js.map +1 -0
  76. package/dist/src/types/monitors.d.ts +623 -0
  77. package/dist/src/types/monitors.d.ts.map +1 -0
  78. package/dist/src/types/monitors.js +3 -0
  79. package/dist/src/types/monitors.js.map +1 -0
  80. package/dist/src/types/platform.d.ts +435 -0
  81. package/dist/src/types/platform.d.ts.map +1 -0
  82. package/dist/src/types/platform.js +3 -0
  83. package/dist/src/types/platform.js.map +1 -0
  84. package/dist/src/utils/command-executor.d.ts +58 -0
  85. package/dist/src/utils/command-executor.d.ts.map +1 -0
  86. package/dist/src/utils/command-executor.js +321 -0
  87. package/dist/src/utils/command-executor.js.map +1 -0
  88. package/dist/test/config/test-config.d.ts +301 -0
  89. package/dist/test/config/test-config.d.ts.map +1 -0
  90. package/dist/test/config/test-config.js +235 -0
  91. package/dist/test/config/test-config.js.map +1 -0
  92. package/dist/test/platform/linux.test.d.ts +6 -0
  93. package/dist/test/platform/linux.test.d.ts.map +1 -0
  94. package/dist/test/platform/linux.test.js +307 -0
  95. package/dist/test/platform/linux.test.js.map +1 -0
  96. package/dist/test/platform/macos.test.d.ts +6 -0
  97. package/dist/test/platform/macos.test.d.ts.map +1 -0
  98. package/dist/test/platform/macos.test.js +276 -0
  99. package/dist/test/platform/macos.test.js.map +1 -0
  100. package/dist/test/platform/windows.test.d.ts +6 -0
  101. package/dist/test/platform/windows.test.d.ts.map +1 -0
  102. package/dist/test/platform/windows.test.js +320 -0
  103. package/dist/test/platform/windows.test.js.map +1 -0
  104. package/dist/test/unit/adapters/adapter-factory.test.d.ts +2 -0
  105. package/dist/test/unit/adapters/adapter-factory.test.d.ts.map +1 -0
  106. package/dist/test/unit/adapters/adapter-factory.test.js +147 -0
  107. package/dist/test/unit/adapters/adapter-factory.test.js.map +1 -0
  108. package/dist/test/unit/adapters/linux-adapter.test.d.ts +2 -0
  109. package/dist/test/unit/adapters/linux-adapter.test.d.ts.map +1 -0
  110. package/dist/test/unit/adapters/linux-adapter.test.js +191 -0
  111. package/dist/test/unit/adapters/linux-adapter.test.js.map +1 -0
  112. package/dist/test/unit/adapters/macos-adapter.test.d.ts +2 -0
  113. package/dist/test/unit/adapters/macos-adapter.test.d.ts.map +1 -0
  114. package/dist/test/unit/adapters/macos-adapter.test.js +224 -0
  115. package/dist/test/unit/adapters/macos-adapter.test.js.map +1 -0
  116. package/dist/test/unit/adapters/windows-adapter.test.d.ts +2 -0
  117. package/dist/test/unit/adapters/windows-adapter.test.d.ts.map +1 -0
  118. package/dist/test/unit/adapters/windows-adapter.test.js +41 -0
  119. package/dist/test/unit/adapters/windows-adapter.test.js.map +1 -0
  120. package/dist/test/unit/core/base-monitor.test.d.ts +2 -0
  121. package/dist/test/unit/core/base-monitor.test.d.ts.map +1 -0
  122. package/dist/test/unit/core/base-monitor.test.js +157 -0
  123. package/dist/test/unit/core/base-monitor.test.js.map +1 -0
  124. package/dist/test/unit/core/cache-manager.test.d.ts +6 -0
  125. package/dist/test/unit/core/cache-manager.test.d.ts.map +1 -0
  126. package/dist/test/unit/core/cache-manager.test.js +127 -0
  127. package/dist/test/unit/core/cache-manager.test.js.map +1 -0
  128. package/dist/test/unit/core/platform-adapter.test.d.ts +2 -0
  129. package/dist/test/unit/core/platform-adapter.test.d.ts.map +1 -0
  130. package/dist/test/unit/core/platform-adapter.test.js +186 -0
  131. package/dist/test/unit/core/platform-adapter.test.js.map +1 -0
  132. package/dist/test/unit/index.test.d.ts +2 -0
  133. package/dist/test/unit/index.test.d.ts.map +1 -0
  134. package/dist/test/unit/index.test.js +183 -0
  135. package/dist/test/unit/index.test.js.map +1 -0
  136. package/dist/test/unit/monitors/cpu-monitor.test.d.ts +2 -0
  137. package/dist/test/unit/monitors/cpu-monitor.test.d.ts.map +1 -0
  138. package/dist/test/unit/monitors/cpu-monitor.test.js +166 -0
  139. package/dist/test/unit/monitors/cpu-monitor.test.js.map +1 -0
  140. package/dist/test/unit/monitors/disk-monitor.test.d.ts +2 -0
  141. package/dist/test/unit/monitors/disk-monitor.test.d.ts.map +1 -0
  142. package/dist/test/unit/monitors/disk-monitor.test.js +46 -0
  143. package/dist/test/unit/monitors/disk-monitor.test.js.map +1 -0
  144. package/dist/test/unit/monitors/memory-monitor.test.d.ts +2 -0
  145. package/dist/test/unit/monitors/memory-monitor.test.d.ts.map +1 -0
  146. package/dist/test/unit/monitors/memory-monitor.test.js +142 -0
  147. package/dist/test/unit/monitors/memory-monitor.test.js.map +1 -0
  148. package/dist/test/unit/monitors/network-monitor.test.d.ts +2 -0
  149. package/dist/test/unit/monitors/network-monitor.test.d.ts.map +1 -0
  150. package/dist/test/unit/monitors/network-monitor.test.js +22 -0
  151. package/dist/test/unit/monitors/network-monitor.test.js.map +1 -0
  152. package/dist/test/unit/monitors/process-monitor.test.d.ts +2 -0
  153. package/dist/test/unit/monitors/process-monitor.test.d.ts.map +1 -0
  154. package/dist/test/unit/monitors/process-monitor.test.js +165 -0
  155. package/dist/test/unit/monitors/process-monitor.test.js.map +1 -0
  156. package/dist/test/unit/monitors/system-monitor-macos.test.d.ts +2 -0
  157. package/dist/test/unit/monitors/system-monitor-macos.test.d.ts.map +1 -0
  158. package/dist/test/unit/monitors/system-monitor-macos.test.js +115 -0
  159. package/dist/test/unit/monitors/system-monitor-macos.test.js.map +1 -0
  160. package/dist/test/unit/monitors/system-monitor.test.d.ts +2 -0
  161. package/dist/test/unit/monitors/system-monitor.test.d.ts.map +1 -0
  162. package/dist/test/unit/monitors/system-monitor.test.js +70 -0
  163. package/dist/test/unit/monitors/system-monitor.test.js.map +1 -0
  164. package/dist/test/unit/types/common.test.d.ts +6 -0
  165. package/dist/test/unit/types/common.test.d.ts.map +1 -0
  166. package/dist/test/unit/types/common.test.js +139 -0
  167. package/dist/test/unit/types/common.test.js.map +1 -0
  168. package/dist/test/unit/types/config.test.d.ts +2 -0
  169. package/dist/test/unit/types/config.test.d.ts.map +1 -0
  170. package/dist/test/unit/types/config.test.js +9 -0
  171. package/dist/test/unit/types/config.test.js.map +1 -0
  172. package/dist/test/unit/types/errors.test.d.ts +6 -0
  173. package/dist/test/unit/types/errors.test.d.ts.map +1 -0
  174. package/dist/test/unit/types/errors.test.js +184 -0
  175. package/dist/test/unit/types/errors.test.js.map +1 -0
  176. package/dist/test/unit/types/index.test.d.ts +2 -0
  177. package/dist/test/unit/types/index.test.d.ts.map +1 -0
  178. package/dist/test/unit/types/index.test.js +39 -0
  179. package/dist/test/unit/types/index.test.js.map +1 -0
  180. package/dist/test/unit/types/monitors.test.d.ts +2 -0
  181. package/dist/test/unit/types/monitors.test.d.ts.map +1 -0
  182. package/dist/test/unit/types/monitors.test.js +9 -0
  183. package/dist/test/unit/types/monitors.test.js.map +1 -0
  184. package/dist/test/unit/types/platform.test.d.ts +2 -0
  185. package/dist/test/unit/types/platform.test.d.ts.map +1 -0
  186. package/dist/test/unit/types/platform.test.js +9 -0
  187. package/dist/test/unit/types/platform.test.js.map +1 -0
  188. package/dist/test/unit/utils/command-executor.test.d.ts +6 -0
  189. package/dist/test/unit/utils/command-executor.test.d.ts.map +1 -0
  190. package/dist/test/unit/utils/command-executor.test.js +153 -0
  191. package/dist/test/unit/utils/command-executor.test.js.map +1 -0
  192. package/dist/test/unit/utils/platform-specific.test.d.ts +2 -0
  193. package/dist/test/unit/utils/platform-specific.test.d.ts.map +1 -0
  194. package/dist/test/unit/utils/platform-specific.test.js +32 -0
  195. package/dist/test/unit/utils/platform-specific.test.js.map +1 -0
  196. package/dist/test/utils/platform-specific.d.ts +139 -0
  197. package/dist/test/utils/platform-specific.d.ts.map +1 -0
  198. package/dist/test/utils/platform-specific.js +306 -0
  199. package/dist/test/utils/platform-specific.js.map +1 -0
  200. package/dist/test/utils/test-base.d.ts +157 -0
  201. package/dist/test/utils/test-base.d.ts.map +1 -0
  202. package/dist/test/utils/test-base.js +316 -0
  203. package/dist/test/utils/test-base.js.map +1 -0
  204. package/package.json +78 -18
  205. package/.travis.yml +0 -7
  206. package/index.js +0 -17
  207. package/lib/bucket.js +0 -14
  208. package/lib/cpu.js +0 -94
  209. package/lib/drive.js +0 -113
  210. package/lib/exec.js +0 -28
  211. package/lib/mem.js +0 -176
  212. package/lib/netstat.js +0 -182
  213. package/lib/openfiles.js +0 -25
  214. package/lib/os.js +0 -148
  215. package/lib/osCmd.js +0 -20
  216. package/lib/proc.js +0 -38
  217. package/lib/users.js +0 -18
  218. package/test/test.js +0 -55
  219. package/util/co.js +0 -237
  220. package/util/index.js +0 -12
package/lib/exec.js DELETED
@@ -1,28 +0,0 @@
1
- /**
2
- * author : Sunil Wang
3
- * createTime : 2019/10/25 10:36
4
- * description :
5
- */
6
- var cp = require('child_process')
7
- var bucket = require('./bucket')
8
-
9
- function exec(command){
10
- return new Promise(function (resolve) {
11
- var runCommand = 'LC_ALL="en_US.UTF-8";LANG="en_US.UTF-8";LANGUAGE="en_US:en";' + command
12
-
13
- cp.exec(runCommand, { shell: true }, function (err, stdout, stderr) {
14
- if (err || !stdout) {
15
- return resolve(bucket.options.NOT_SUPPORTED_VALUE)
16
- }
17
-
18
- return resolve(stdout)
19
- })
20
- })
21
- }
22
-
23
- module.exports = exec
24
- module.exports.wrapExec = function(command){
25
- return function(){
26
- return exec(command)
27
- }
28
- }
package/lib/mem.js DELETED
@@ -1,176 +0,0 @@
1
- /**
2
- * @Author: 王澍(SunilWang)
3
- * @Date: 2017-7-9 21:49:00
4
- * @Last Modified by: 王澍(SunilWang)
5
- * @Last Modified time: 2020-09-10 14:59:41
6
- * @Description:
7
- */
8
- var bucket = require('./bucket')
9
- var os = require('os')
10
- var fs = require('fs')
11
- var co = require('../util/co')
12
- var util = require('../util')
13
- var exec = require('./exec')
14
-
15
- var linuxFreeMemory = function () {
16
- return new Promise(function (resolve) {
17
- // https://github.com/SunilWang/node-os-utils/pull/11
18
- // running this on an embedded linux device. This steps takes around 500ms. With this change we brought it down to a few milliseconds.
19
- fs.readFile('/proc/meminfo', 'utf8', function (err, out) {
20
- if (err) {
21
- return resolve(bucket.options.NOT_SUPPORTED_VALUE)
22
- }
23
- var memInfo = {}
24
- var usage = out.toString().trim().split('\n')
25
- usage.forEach((line) => {
26
- var pair = line.split(':')
27
- memInfo[pair[0]] = parseInt(pair[1], 10)
28
- })
29
-
30
- var totalMem = parseInt(memInfo.MemTotal, 10) * 1024
31
-
32
- // check if MemAvailable exists
33
- if (!memInfo.MemAvailable) {
34
- memInfo.MemAvailable = memInfo['MemFree'] + memInfo['Buffers'] + memInfo['Cached'] + memInfo['SReclaimable'] - memInfo['Shmem'];
35
- }
36
- var freeMem = memInfo.MemAvailable * 1024
37
-
38
- // https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=34e431b0ae398fc54ea69ff85ec700722c9da773
39
- // https://www.cnblogs.com/johnnyzen/p/8011309.html
40
- if (os.release() < '3.14') {
41
- freeMem =
42
- ((memInfo.MemFree || 0) +
43
- (memInfo.Buffers || 0) +
44
- (memInfo.Cached || 0)) *
45
- 1024
46
- }
47
-
48
- return resolve({ totalMem, freeMem })
49
- })
50
- })
51
- }
52
-
53
- // learn from: https://github.com/X-Profiler/xtransit/blob/master/orders/system_log.js#L356
54
- var osxFreeMemory = co.wrap(function* () {
55
- var totalMem = os.totalmem()
56
- var mappings = {
57
- 'Pages purgeable': 'purgeable',
58
- 'Pages wired down': 'wired',
59
- 'Pages active': 'active',
60
- 'Pages inactive': 'inactive',
61
- 'Pages occupied by compressor': 'compressed',
62
- }
63
- var [vmStat, pagePageable] = yield Promise.all([
64
- exec('vm_stat'),
65
- exec('sysctl vm.page_pageable_internal_count'),
66
- ])
67
-
68
- vmStat = vmStat.toString().trim()
69
- pagePageable = pagePageable.toString().trim()
70
-
71
- // get page size
72
- var pageSize = 4096
73
- var matchdPageSize = /page size of (\d+) bytes/.exec(vmStat)
74
-
75
- if (matchdPageSize && util.isNumber(matchdPageSize[1])) {
76
- pageSize = Number(matchdPageSize[1])
77
- }
78
-
79
- // get page pageable
80
- var [, pageableValue] = pagePageable.split(':')
81
-
82
- if (!util.isNumber(pageableValue)) {
83
- return {
84
- totalMem,
85
- freeMem: os.freemem(),
86
- }
87
- }
88
-
89
- pageableValue = Number(pageableValue) * pageSize
90
-
91
- // get vm stats
92
- var lines = vmStat.split('\n').filter((x) => x !== '')
93
- var stats = {}
94
-
95
- lines.forEach((x) => {
96
- var parts = x.split(':')
97
- var key = parts[0]
98
- var val = parts[1].replace('.', '').trim()
99
-
100
- if (mappings[key]) {
101
- var ky = mappings[key]
102
- stats[ky] = val * pageSize
103
- }
104
- })
105
-
106
- // get app memory
107
- var appMemory = pageableValue - stats.purgeable
108
- // get wired memory
109
- var wiredMemory = stats.wired
110
- // get compressed memory
111
- var compressedMemory = stats.compressed
112
- var used = appMemory + wiredMemory + compressedMemory
113
-
114
- return {
115
- totalMem,
116
- freeMem: totalMem - used,
117
- }
118
- })
119
-
120
- bucket.mem = {
121
- info: co.wrap(function* () {
122
- var totalMem = null
123
- var freeMem = null
124
- var memInfo = yield linuxFreeMemory()
125
-
126
- if (bucket.isNotSupported(memInfo)) {
127
- totalMem = os.totalmem()
128
- freeMem = os.freemem()
129
- if (os.platform() === 'darwin') {
130
- var mem = yield osxFreeMemory()
131
- totalMem = mem.totalMem
132
- freeMem = mem.freeMem
133
- }
134
- } else {
135
- totalMem = memInfo.totalMem
136
- freeMem = memInfo.freeMem
137
- }
138
-
139
- var totalMemMb = parseFloat((totalMem / 1024 / 1024).toFixed(2))
140
- var usedMemMb = parseFloat(((totalMem - freeMem) / 1024 / 1024).toFixed(2))
141
- var freeMemMb = parseFloat((totalMemMb - usedMemMb).toFixed(2))
142
- var usedMemPercentage = parseFloat((100 * ((totalMem - freeMem) / totalMem)).toFixed(2))
143
- var freeMemPercentage = parseFloat((100 * (freeMem / totalMem)).toFixed(2))
144
-
145
- return {
146
- totalMemMb: totalMemMb,
147
- usedMemMb: usedMemMb,
148
- freeMemMb: freeMemMb,
149
- usedMemPercentage: usedMemPercentage,
150
- freeMemPercentage: freeMemPercentage,
151
- }
152
- }),
153
- free: function () {
154
- var self = this
155
-
156
- return self.info().then(function (res) {
157
- return Promise.resolve({
158
- totalMemMb: res.totalMemMb,
159
- freeMemMb: res.freeMemMb,
160
- })
161
- })
162
- },
163
- used: function () {
164
- var self = this
165
-
166
- return self.info().then(function (res) {
167
- return Promise.resolve({
168
- totalMemMb: res.totalMemMb,
169
- usedMemMb: res.usedMemMb,
170
- })
171
- })
172
- },
173
- totalMem: function () {
174
- return os.totalmem()
175
- },
176
- }
package/lib/netstat.js DELETED
@@ -1,182 +0,0 @@
1
- /**
2
- * author : Sunil Wang
3
- * createTime : 2017/7/9 22:16
4
- * description :
5
- */
6
- var bucket = require('./bucket')
7
- var co = require('../util/co')
8
- var exec = require('./exec')
9
-
10
- var ifconfig = {
11
- breakIntoBlocks: function breakIntoBlocks (fullText) {
12
- var blocks = []
13
- var lines = fullText.split('\n')
14
- var currentBlock = []
15
- lines.forEach(function (line) {
16
- if (line.length > 0 && ['\t', ' '].indexOf(line[0]) === -1 && currentBlock.length > 0) {
17
- // start of a new block detected
18
- blocks.push(currentBlock)
19
- currentBlock = []
20
- }
21
- if (line.trim()) {
22
- currentBlock.push(line)
23
- }
24
- })
25
- if (currentBlock.length > 0) {
26
- blocks.push(currentBlock)
27
- }
28
- return blocks
29
- },
30
-
31
- parseSingleBlock: function parseSingleBlock (block) {
32
- var data = {}
33
- block.forEach(function (line, i) {
34
- var match = line.match(/^(\S+)\s+Link/)
35
- if (i === 0) {
36
- var match2 = line.match(/([a-zA-Z0-9]+):\s/)
37
- if (match === null && match2) {
38
- match = match2
39
- }
40
- }
41
- if (match) { // eth0 Link encap:Ethernet HWaddr 04:01:d3:db:fd:01
42
- data.device = match[1] // eth0
43
- var link = {}
44
- match = line.match(/encap:(\S+)/)
45
- if (match) {
46
- link.encap = match[1]
47
- }
48
- match = line.match(/HWaddr\s+(\S+)/)
49
- if (match) {
50
- link.hwaddr = match[1]
51
- }
52
- data.link = link
53
- } else {
54
- var section = data.other || {}
55
- if ((match = line.match(/collisions:(\S+)/))) {
56
- section.collisions = parseInt(match[1])
57
- }
58
- if ((match = line.match(/txqueuelen:(\S+)/))) {
59
- section.txqueuelen = parseInt(match[1])
60
- }
61
- if ((match = line.match(/RX bytes:(\S+)/))) {
62
- section.rxBytes = parseInt(match[1])
63
- }
64
- if ((match = line.match(/RX packets (\S+) {2}bytes (\S+)/))) {
65
- section.rxBytes = parseInt(match[2])
66
- }
67
- if ((match = line.match(/TX bytes:(\S+)/))) {
68
- section.txBytes = parseInt(match[1])
69
- }
70
- if ((match = line.match(/TX packets (\S+) {2}bytes (\S+)/))) {
71
- section.txBytes = parseInt(match[2])
72
- }
73
- data.other = section
74
- }
75
- })
76
- return data
77
- }
78
- }
79
-
80
- function ifconfigStats () {
81
- return co(function * () {
82
- var res = yield exec('ifconfig')
83
-
84
- if(bucket.isNotSupported(res)) return res
85
-
86
- var blocks = ifconfig.breakIntoBlocks(res)
87
- var stats = []
88
-
89
- blocks.forEach(function (block, index) {
90
- blocks[index] = ifconfig.parseSingleBlock(block)
91
- stats[index] = {
92
- 'interface': blocks[index].device,
93
- 'inputBytes': (blocks[index].other && blocks[index].other.rxBytes) || 0,
94
- 'outputBytes': (blocks[index].other && blocks[index].other.txBytes) || 0
95
- }
96
- })
97
-
98
- return stats
99
- })
100
- }
101
-
102
- bucket.netstat = {
103
- stats: co.wrap(function * () {
104
- var out = yield exec('ip -s link')
105
-
106
- if(bucket.isNotSupported(out)) return ifconfigStats()
107
-
108
- var names = new RegExp(/[0-9]+: ([\S]+): /g)
109
- var RX = new RegExp(/^\s+RX:\s+bytes\s+packets\s+errors\s+dropped\s+(overrun|missed)\s+mcast\s*\n\s*([0-9]+)\s+/gm)
110
- var TX = new RegExp(/^\s+TX:\s+bytes\s+packets\s+errors\s+dropped\s+carrier\s+collsns\s*\n\s*([0-9]+)\s+/gm)
111
-
112
- var stats = []
113
- var i = 0
114
- var res = []
115
-
116
- while ((res = names.exec(out)) !== null) {
117
- stats[i++] = {
118
- interface: res[1]
119
- }
120
- }
121
-
122
- i = 0
123
- while ((res = RX.exec(out)) !== null) {
124
- stats[i++].inputBytes = res[2]
125
- }
126
-
127
- i = 0
128
- while ((res = TX.exec(out)) !== null) {
129
- stats[i++].outputBytes = res[1]
130
- }
131
-
132
- return stats
133
- }),
134
- inOut: function (interval) {
135
- var self = this
136
-
137
- if (!interval) {
138
- interval = bucket.options.INTERVAL
139
- }
140
-
141
- return Promise.all([
142
- self.stats(),
143
- (function () {
144
- return new Promise(function (resolve) {
145
- setTimeout(function () {
146
- self.stats().then(resolve)
147
- }, interval)
148
- })
149
- })()
150
- ]).then(function (stats) {
151
- var oldStats = stats[0]
152
- var newStats = stats[1]
153
-
154
- var metrics = {
155
- total: {
156
- inputMb: 0,
157
- outputMb: 0
158
- }
159
- }
160
- var nbProblems = 0
161
-
162
- for (var i = 0; i < oldStats.length; i++) {
163
- if (oldStats[i].interface !== 'lo' && oldStats[i].interface !== 'lo0' && oldStats[i].inputBytes > 0 && oldStats[i].outputBytes > 0) {
164
- metrics[oldStats[i].interface] = {}
165
- metrics[oldStats[i].interface]['inputMb'] = parseFloat(((newStats[i].inputBytes - oldStats[i].inputBytes) / 1000000).toFixed(2))
166
- metrics[oldStats[i].interface]['outputMb'] = parseFloat(((newStats[i].outputBytes - oldStats[i].outputBytes) / 1000000).toFixed(2))
167
-
168
- metrics.total['inputMb'] += parseFloat(metrics[oldStats[i].interface]['inputMb'])
169
- metrics.total['outputMb'] += parseFloat(metrics[oldStats[i].interface]['outputMb'])
170
- } else {
171
- nbProblems++
172
- }
173
- }
174
-
175
- if (nbProblems === oldStats.length) {
176
- return Promise.resolve(bucket.options.NOT_SUPPORTED_VALUE)
177
- }
178
-
179
- return Promise.resolve(metrics)
180
- })
181
- }
182
- }
package/lib/openfiles.js DELETED
@@ -1,25 +0,0 @@
1
- /**
2
- * author : Sunil Wang
3
- * createTime : 2017/7/10 10:26
4
- * description :
5
- */
6
- var bucket = require('./bucket')
7
- var fs = require('fs')
8
-
9
- bucket.openfiles = {
10
- openFd: function () {
11
- return new Promise(function (resolve) {
12
- fs.readFile('/proc/sys/fs/file-nr', function (err, out) {
13
- if (err) {
14
- return resolve(bucket.options.NOT_SUPPORTED_VALUE)
15
- }
16
-
17
- var result = out.toString().replace(/\n/g, '').split(' ')[0]
18
-
19
- result = parseInt(result, 10)
20
-
21
- return resolve(result)
22
- })
23
- })
24
- }
25
- }
package/lib/os.js DELETED
@@ -1,148 +0,0 @@
1
- /**
2
- * author : Sunil Wang
3
- * createTime : 2017/7/10 10:36
4
- * description :
5
- */
6
- var bucket = require('./bucket')
7
- var fs = require('fs')
8
- var os = require('os')
9
- var co = require('../util/co')
10
- var exec = require('./exec')
11
-
12
- var originalOperatingSystem = {
13
- checkLastResort: co.wrap(function * (){
14
- return exec('uname -sr')
15
- }),
16
- darwin: function () {
17
- var self = this
18
-
19
- return co(function * (){
20
- var res = yield exec('sw_vers')
21
-
22
- if(bucket.isNotSupported(res)) return self.checkLastResort()
23
-
24
- var version = res.match(/[\n\r].*ProductVersion:\s*([^\n\r]*)/)[1]
25
- var distribution = res.match(/.*ProductName:\s*([^\n\r]*)/)[1]
26
-
27
- return distribution + ' ' + version
28
- })
29
- },
30
- linux: function () {
31
- var self = this
32
-
33
- // Debian, Ubuntu, CentOS
34
- return new Promise(function (resolve) {
35
- fs.readFile('/etc/issue', function (err, out) {
36
- if (err) {
37
- return self.checkLastResort(resolve)
38
- }
39
- out = out.toString()
40
- var version = out.match(/[\d]+(\.[\d][\d]?)?/)
41
-
42
- if (version !== null) {
43
- version = version[0]
44
- }
45
- var distribution = out.match(/[\w]*/)[0]
46
-
47
- if (version !== null && distribution !== null) {
48
- var resultOs = distribution + ' ' + version
49
- return resolve(resultOs)
50
- } else if (distribution !== null && distribution !== '') {
51
- return resolve(distribution)
52
- } else if (version === null) {
53
- fs.readFile('/etc/redhat-release', function (err, out) {
54
- if (err) {
55
- return self.checkLastResort(resolve)
56
- }
57
-
58
- out = out.toString()
59
- version = out.match(/[\d]+(\.[\d][\d]?)?/)
60
-
61
- if (version !== null) {
62
- version = version[0]
63
- }
64
-
65
- var resultOs = 'Red Hat ' + version
66
- return resolve(resultOs)
67
- })
68
- }
69
- })
70
- })
71
- }
72
- }
73
-
74
- bucket.os = {
75
- oos: function () {
76
- var platform = os.platform()
77
-
78
- if (platform === 'linux') {
79
- return originalOperatingSystem.linux()
80
- }
81
-
82
- if (platform === 'darwin') {
83
- return originalOperatingSystem.darwin()
84
- }
85
-
86
- return originalOperatingSystem.checkLastResort()
87
- },
88
- platform: function () {
89
- return os.platform()
90
- },
91
- uptime: function () {
92
- // seconds
93
- return os.uptime()
94
- },
95
- ip: function () {
96
- var platform = os.platform()
97
- var interfaces = os.networkInterfaces()
98
- var ip = ''
99
- var i = 0
100
- try {
101
-
102
- if (platform === 'linux' && interfaces.eth0) {
103
- for (i = 0; i < interfaces.eth0.length; i++) {
104
- if (os.networkInterfaces().eth0[i].family === 'IPv4') {
105
- ip = os.networkInterfaces().eth0[i].address
106
- break
107
- }
108
- }
109
-
110
- return ip
111
- }
112
-
113
- if (platform === 'darwin') {
114
- for (i = 0; i < interfaces.en0.length; i++) {
115
- if (os.networkInterfaces().en0[i].family === 'IPv4') {
116
- ip = os.networkInterfaces().en0[i].address
117
- break
118
- }
119
- }
120
-
121
- return ip
122
- }
123
-
124
- for (i in interfaces) {
125
- var item = interfaces[i]
126
- for (var j in item) {
127
- if (item[j]['internal'] === false && item[j]['family'] === 'IPv4') {
128
- ip = item[j]['address']
129
- break
130
- }
131
- }
132
- }
133
- } catch (error){
134
- ip = 'LOCALHOST'
135
- }
136
-
137
- return ip
138
- },
139
- hostname: function () {
140
- return os.hostname()
141
- },
142
- type: function () {
143
- return os.type()
144
- },
145
- arch: function () {
146
- return os.arch()
147
- }
148
- }
package/lib/osCmd.js DELETED
@@ -1,20 +0,0 @@
1
- /**
2
- * author : Sunil Wang
3
- * createTime : 2017/7/9 19:08
4
- * description :
5
- */
6
- var bucket = require('./bucket')
7
- var exec = require('./exec')
8
- var wrapExec = exec.wrapExec
9
-
10
- bucket.osCmd = {
11
- topCpu: wrapExec('ps -eo pcpu,user,args --no-headers | sort -k 1 -n | tail -n 10 | sort -k 1 -nr | cut -c 1-70'),
12
- topMem: wrapExec('ps -eo pmem,pid,cmd | sort -k 1 -n | tail -n 10 | sort -k 1 -nr | cut -c 1-70'),
13
- vmstats: wrapExec('vmstat -S m'),
14
- processesUsers: wrapExec('ps hax -o user | sort | uniq -c'),
15
- diskUsage: wrapExec('df -h'),
16
- who: wrapExec('who'),
17
- whoami: wrapExec('whoami'),
18
- openPorts: wrapExec('lsof -Pni4 | grep ESTABLISHED'),
19
- ifconfig: wrapExec('ifconfig')
20
- }
package/lib/proc.js DELETED
@@ -1,38 +0,0 @@
1
- /**
2
- * author : Sunil Wang
3
- * createTime : 2017/7/10 14:31
4
- * description :
5
- */
6
- var bucket = require('./bucket')
7
- var exec = require('./exec')
8
- var os = require('os')
9
- var co = require('../util/co')
10
-
11
- bucket.proc = {
12
- totalProcesses: co.wrap(function * () {
13
- var res = yield exec("top -bn1 | awk 'NR > 7 && $8 ~ /R|S|D|T/ { print $12 }'")
14
-
15
- if(bucket.isNotSupported(res)){
16
- if (os.platform() === 'darwin') {
17
- var nb = yield exec('ps -A')
18
-
19
- nb = nb.toString().split('\n')
20
-
21
- return nb.length - 1
22
- }
23
-
24
- return res
25
- }
26
-
27
- var resultProc = (res.split('\n')).length
28
-
29
- return resultProc
30
- }),
31
- zombieProcesses: co.wrap(function * () {
32
- var res = yield exec("top -bn1 | awk 'NR > 7 && $8 ~ /Z/ { print $12 }'")
33
-
34
- if(bucket.isNotSupported(res)) return res
35
-
36
- return (res.split('\n')).length
37
- })
38
- }
package/lib/users.js DELETED
@@ -1,18 +0,0 @@
1
- /**
2
- * author : Sunil Wang
3
- * createTime : 2017/7/10 10:17
4
- * description :
5
- */
6
- var bucket = require('./bucket')
7
- var exec = require('./exec')
8
- var co = require('../util/co')
9
-
10
- bucket.users = {
11
- openedCount: co.wrap(function * () {
12
- var res = yield exec('who | grep -v localhost | wc -l')
13
-
14
- if(bucket.isNotSupported(res)) return res
15
-
16
- return parseInt(res, 10)
17
- })
18
- }
package/test/test.js DELETED
@@ -1,55 +0,0 @@
1
- /* eslint-disable no-undef */
2
- /**
3
- * author : Sunil Wang
4
- * createTime : 2017/7/10 14:51
5
- * description :
6
- */
7
-
8
- var osu = require('../')
9
- var assert = require('assert')
10
-
11
- describe('cpu', function () {
12
- it('returns cpu average and count', function (done) {
13
- this.timeout(5000)
14
-
15
- var cpu = osu.cpu
16
- var info = cpu.average()
17
- var count = cpu.count()
18
- assert.ok(count > 0)
19
- assert.ok(Object.keys(info).length > 0)
20
- done()
21
- })
22
-
23
- it.skip('returns cpu usage', function (done) {
24
- this.timeout(5000)
25
-
26
- var cpu = osu.cpu
27
-
28
- cpu.usage().then((num) => {
29
- assert.ok(num > 0)
30
- done()
31
- })
32
- })
33
- })
34
-
35
- describe('drive', function () {
36
- it('returns drive info', function (done) {
37
- var drive = osu.drive
38
-
39
- drive.info().then((info) => {
40
- assert.ok(Object.keys(info).length > 0)
41
- done()
42
- })
43
- })
44
- })
45
-
46
- describe('memory', function () {
47
- it('returns memory info', function (done) {
48
- var men = osu.mem
49
-
50
- men.info().then((info) => {
51
- assert.ok(Object.keys(info).length > 0)
52
- done()
53
- })
54
- })
55
- })