首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  Java

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

  •  
  •   TomKate · 47 天前 · 2049 次点击
    这是一个创建于 47 天前的主题,其中的信息可能已经有所发展或是发生改变。

    如题。

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