如题。
![]() | 1 TomKate OP 目前了解了以下两种方式 1.远端运行一个 server 程序记录剩余磁盘大小。 2.通过 ftp 的方式。 各位前辈,还有没有其它最优解? |
2 lazyfighter 2019-03-04 11:05:02 +08:00 每个机器都部署一个 agent 但我觉得 java 不适合 ,go 应该适合一点 |
![]() | 3 hakim 2019-03-04 11:07:36 +08:00 使用 smis/snmp 协议即可 |
![]() | 4 Mazexal 2019-03-04 11:15:19 +08:00 java 可以远程执行脚本命令, 然后直接得到结果的 |
7 ForestV 2019-03-04 11:20:28 +08:00 jni 配合 sigar.jar 和相关的扩展包 |
![]() | 8 flame90 2019-03-04 11:21:16 +08:00 sigar 了解一下 |
9 airfling 2019-03-04 11:26:02 +08:00 snmp,或者 sigar 都可以 |
![]() | 11 msg7086 2019-03-04 11:29:57 +08:00 远程 wmi ? |
![]() | 12 caryqy 2019-03-04 11:36:05 +08:00 反过来呢,远端主动向你上报磁盘信息 |
![]() | 13 TomKate OP 可能是我描述的不够详细,主要是想通过 java 来实现获取远端文件服务器的磁盘剩余大小。也就是说获取网络位置的磁盘大小。 |
![]() | 14 TomKate OP 不在远端进行任何部署 |
15 moximo 2019-03-04 12:12:59 +08:00 via Android 老哥,想都不用想那些骚操作,直接 java 的 ssh 客户端上去 echo 你想要的结果就行啦。 |
16 moonblog 2019-03-04 13:49:50 +08:00 @TomKate 远程不做任何部署,却想获取磁盘信息,兄弟我觉得你可以当黑客了 部署的话,agent+sigar 实现,我做过 |
![]() | 17 yinqi025 2019-03-04 13:55:44 +08:00 我觉得楼主在飘~~~,服务端没有任何的宿主或者服务端的东西 是不可能有结果的 |
18 maokabc 2019-03-04 14:01:25 +08:00 via Android 直接用 jsch 库,sftp 支持 statvfs,只要开了 ssh |
19 dark3212 2019-03-04 14:28:31 +08:00 服务器是 windows 的话有个思路,就是将远程磁盘共享出来,本地电脑挂载,然后 java 像访问本地磁盘那样访问挂载磁盘应该可以。 但是安全性堪忧,特别是广域网。 |
![]() | 20 qk3z 2019-03-04 14:43:58 +08:00 via Android snmp 搞定 |
![]() | 21 rockyou12 2019-03-04 14:51:34 +08:00 就是监控嘛,其实 lz 你调研下主流的监控软件就知道了,不部署 agent 基本是不可能的。有很多权限、性能的问题 |
22 airfling 2019-03-04 14:51:44 +08:00 对于 linux 那你可以用 jsch 或者开启 snmp 使用 snmp。同样的对于 windows 你可以用 snmp 协议或者 telnet 协议,远程不能部署,只用走这两种协议才可以获取到 |
23 laminux29 2019-03-04 15:33:30 +08:00 用 Thrift 做一个 Client-Server 的 RPC。别用 snmp,第一不准,第二黑箱不知道细节,会给后期性能造成大影响。因为精确统计磁盘,对性能影响大。 |
![]() | 24 tao147258 2019-03-04 15:53:44 +08:00 snmp 比较老了,装个 zabbix 之类的吧 |
25 lazyfighter 2019-03-04 19:33:44 +08:00 这能实现? server 端啥都不装,不装 service 没有办法 pull,又不装 agent 又没办法 push,拿数据怎么搞? |
26 jhsea3do 2019-03-04 20:19:21 +08:00 1、有 agent , zabbix / jenkins (java) 2、无 agent, ansible / jsch (java) |
27 lff0305 2019-03-04 22:26:18 +08:00 via Android 不想远程装东西的话 jni 配合 perfmon api 或者 wmi api 远程需要建立连接,用户名密码,以前做过肯定可行,问题是 Home 版貌似不行,再就是 win 上需要权限比较高的用户才行,记得至少是 power user 组,要是客户比较严的话不可能给你这个用户 |
![]() | 28 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()); |