求助! 如何获取服务器的剩余磁盘空间?

sungengyu 2005-05-11 08:54:30
服务器不是 windows 操作系统。想远程获取服务器的磁盘空间,不知道有没有什么协议支持。

SNMP 能不能做到?

谢谢。



...全文
305 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
sungengyu 2005-07-22
  • 打赏
  • 举报
回复
已经搞定了,修改 ect/snmp/snmpd.conf 文件就行了。
sungengyu 2005-06-29
  • 打赏
  • 举报
回复
不过现在还有点问题,我不会配置 Linux 和 Solaris 的SNMP。

sungengyu 2005-05-19
  • 打赏
  • 举报
回复
呵呵,我已经解决了。
用SNMP协议,MSDN 光盘中搜索 SNMP ,有一个例子 SNMPUTIL ,是个控制台程序。
运行时需要命令行参数 ,如下:

snmputil.exe walk 对方ip public .1.3.6.1.2.1.25.4.2.1.2

在这个例子的基础上改一下就行了,具体的细节看源码吧。

这个东西不难,主要在于缺乏中文文档。
fisker0303 2005-05-18
  • 打赏
  • 举报
回复
呵呵,我感觉有难度,祝楼主好运,关注中....
sungengyu 2005-05-12
  • 打赏
  • 举报
回复
fisker0303(Thinking In Love): 谁去写S?得写好几个S吧,针对windows的,针对linux的……
我不会写。 我觉得C/S不是解决的办法。SNMP应该可以,我试试,如果可行的话,我会把解决办法帖出来。

哪位兄弟有 MIB 相关资料可以提供,不胜感激!
sungengyu 2005-05-11
  • 打赏
  • 举报
回复
oyljerry(【勇敢的心】→ ㊣Striving For,Game Over㊣) :
什么意思?怎么查?“Linux/Unix 中”指的是什么?


我只是听说 SNMP 能做到,但是我根本就不知道怎么做。
服务器有可能是 Linux,也有可能是 Windows,所以只能针对协议而不能针对操作系统。

客户端是windows,我想在客户端做一个远程管理程序(就是SNMP中的管理进程),有点无从下手。

MSDN 的光盘上有一个 SNMP 的例子。不过我还是不知道怎么得到服务器的剩余磁盘空间。
oyljerry 2005-05-11
  • 打赏
  • 举报
回复
记得Linux/Unix中好像有SNMP相关的,你自己好好查查资料
fisker0303 2005-05-11
  • 打赏
  • 举报
回复
搞个C/S模型,让S去获得,然后返回给C不行吗?
sungengyu 2005-05-11
  • 打赏
  • 举报
回复
afu1983(gdddddddddddddd) ( ) : ft,远程。不是本地。
afu1983 2005-05-11
  • 打赏
  • 举报
回复
//////////////////////////////////////得到磁盘信息///////////////////////////////////////////
strcpy(si.disk,"磁盘空间: ");
DWORD maskdriver;
ULONGLONG totalspace=0,freespace=0;
ULONGLONG ulltotalspace,ullfreespace,freebyte;
DWORD drivertype;
char driver[10];
if(!(maskdriver=GetLogicalDrives()))
return;
for(int i=0;i<26;i++)
{
if(!(maskdriver>>i))
break;
if(maskdriver>>i&1)
{
driver[0]=i+'A';
driver[1]=':';
driver[2]='\\';
driver[3]=0;
drivertype=GetDriveType(driver);
if(drivertype!=DRIVE_FIXED)
continue;
if(!GetDiskFreeSpaceEx (driver,
(PULARGE_INTEGER)&freebyte,
(PULARGE_INTEGER)&ulltotalspace,
(PULARGE_INTEGER)&ullfreespace))
return;
totalspace+=ulltotalspace;
freespace+=ullfreespace;
}
}
int dfreespace=0,dtotalspace=0,lv;
dfreespace=(int)(freespace/(1024*1024*1024));
dtotalspace=(int)(totalspace/(1024*1024*1024));
lv=(int)(freespace/(float)totalspace*100);
char space[256];
wsprintf(space,"总磁盘空间为:%dG,剩余磁盘空间为:%dG(占%d%c)",dtotalspace,dfreespace,lv,'%');

19,612

社区成员

发帖
与我相关
我的任务
社区描述
系统使用、管理、维护问题。可以是Ubuntu, Fedora, Unix等等
社区管理员
  • 系统维护与使用区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧