如何通过 Java 获取远端服务器剩余磁盘大小?

2019-03-04 10:56:17 +08:00
 TomKate

如题。

5982 次点击
所在节点    Java
28 条回复
rockyou12
2019-03-04 14:51:34 +08:00
就是监控嘛,其实 lz 你调研下主流的监控软件就知道了,不部署 agent 基本是不可能的。有很多权限、性能的问题
airfling
2019-03-04 14:51:44 +08:00
对于 linux 那你可以用 jsch 或者开启 snmp 使用 snmp。同样的对于 windows 你可以用 snmp 协议或者 telnet 协议,远程不能部署,只用走这两种协议才可以获取到
laminux29
2019-03-04 15:33:30 +08:00
用 Thrift 做一个 Client-Server 的 RPC。别用 snmp,第一不准,第二黑箱不知道细节,会给后期性能造成大影响。因为精确统计磁盘,对性能影响大。
tao147258
2019-03-04 15:53:44 +08:00
snmp 比较老了,装个 zabbix 之类的吧
lazyfighter
2019-03-04 19:33:44 +08:00
这能实现? server 端啥都不装,不装 service 没有办法 pull,又不装 agent 又没办法 push,拿数据怎么搞?
jhsea3do
2019-03-04 20:19:21 +08:00
1、有 agent , zabbix / jenkins (java)
2、无 agent, ansible / jsch (java)
lff0305
2019-03-04 22:26:18 +08:00
不想远程装东西的话 jni 配合 perfmon api 或者 wmi api 远程需要建立连接,用户名密码,以前做过肯定可行,问题是
Home 版貌似不行,再就是 win 上需要权限比较高的用户才行,记得至少是 power user 组,要是客户比较严的话不可能给你这个用户
DarrenF
2019-03-05 14:33:12 +08:00
@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());

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/540751

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX