如题。
如题。
|
1
目前了解了以下两种方式
1.远端运行一个 server 程序记录剩余磁盘大小。 2.通过 ftp 的方式。 各位前辈,还有没有其它最优解? |
|
lazyfighterMar 4, 2019
2
每个机器都部署一个 agent 但我觉得 java 不适合 ,go 应该适合一点
|
|
hakimMar 4, 2019
3
使用 smis/snmp 协议即可
|
|
MazexalMar 4, 2019
4
java 可以远程执行脚本命令, 然后直接得到结果的
|
|
ForestVMar 4, 2019
7
jni 配合 sigar.jar 和相关的扩展包
|
|
flame90Mar 4, 2019
8
sigar 了解一下
|
|
airflingMar 4, 2019
9
snmp,或者 sigar 都可以
|
|
msg7086Mar 4, 2019
11
远程 wmi ?
|
|
caryqyMar 4, 2019
12
反过来呢,远端主动向你上报磁盘信息
|
|
13
可能是我描述的不够详细,主要是想通过 java 来实现获取远端文件服务器的磁盘剩余大小。也就是说获取网络位置的磁盘大小。
|
|
14
不在远端进行任何部署
|
|
moximoMar 4, 2019 via Android
15
老哥,想都不用想那些骚操作,直接 java
的 ssh 客户端上去 echo 你想要的结果就行啦。 |
|
yinqi025Mar 4, 2019
17
我觉得楼主在飘~~~,服务端没有任何的宿主或者服务端的东西 是不可能有结果的
|
|
maokabcMar 4, 2019 via Android
18
直接用 jsch 库,sftp 支持 statvfs,只要开了 ssh
|
|
dark3212Mar 4, 2019
19
服务器是 windows 的话有个思路,就是将远程磁盘共享出来,本地电脑挂载,然后 java 像访问本地磁盘那样访问挂载磁盘应该可以。
但是安全性堪忧,特别是广域网。 |
|
qk3zMar 4, 2019 via Android
20
snmp 搞定
|
|
rockyou12Mar 4, 2019
21
就是监控嘛,其实 lz 你调研下主流的监控软件就知道了,不部署 agent 基本是不可能的。有很多权限、性能的问题
|
|
airflingMar 4, 2019
22
对于 linux 那你可以用 jsch 或者开启 snmp 使用 snmp。同样的对于 windows 你可以用 snmp 协议或者 telnet 协议,远程不能部署,只用走这两种协议才可以获取到
|
|
laminux29Mar 4, 2019
23
用 Thrift 做一个 Client-Server 的 RPC。别用 snmp,第一不准,第二黑箱不知道细节,会给后期性能造成大影响。因为精确统计磁盘,对性能影响大。
|
|
tao147258Mar 4, 2019
24
snmp 比较老了,装个 zabbix 之类的吧
|
|
lazyfighterMar 4, 2019
25
这能实现? server 端啥都不装,不装 service 没有办法 pull,又不装 agent 又没办法 push,拿数据怎么搞?
|
|
jhsea3doMar 4, 2019
26
1、有 agent , zabbix / jenkins (java)
2、无 agent, ansible / jsch (java) |
|
lff0305Mar 4, 2019 via Android
27
不想远程装东西的话 jni 配合 perfmon api 或者 wmi api 远程需要建立连接,用户名密码,以前做过肯定可行,问题是
Home 版貌似不行,再就是 win 上需要权限比较高的用户才行,记得至少是 power user 组,要是客户比较严的话不可能给你这个用户 |
|
28
@dark3212 这个我试过 挂载出来好像不行,Java 依然只能读取本地磁盘,用 File ("\\网络路径文件夹")可以读取到网络路径文件所在磁盘剩余大小:
File win = new File("\\\\192.xxx.xxx.xxx\\share"); System.out.println(win.getPath()); System.out.println(win.getName()); System.out.println("Free space = " + (win.getFreeSpace() / (1024 * 1024)) / 1024 + "G"); // 显示 GB 大小 System.out.println("Free space = " + win.getFreeSpace()); System.out.println("Usable space = " + win.getUsableSpace()); System.out.println("Total space = " + win.getTotalSpace()); |