V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
TomKate
V2EX  ›  Java

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

  •  
  •   TomKate · Mar 4, 2019 · 6775 views
    This topic created in 2621 days ago, the information mentioned may be changed or developed.

    如题。

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