首页 > 解决方案 > 需要从远程服务器检查根目录的大小

问题描述

我无法找到远程 ftp/sftp 服务器根目录的大小

我已经尝试过ls -l命令du -sh,没有任何效果

vars.filepath = "sftp://username:password@abc.server.com/root/";
cmd = "ls -l "+vars.filepath;
vars.res = execCommand(cmd, true);
logInfo("size : "+ vars.res);   

它应该给我以 MB 为单位的根目录的大小,不包括子目录的大小。
它给了我lsdu命令

-53,cannot access sftp://username:password@abc.server.com/root/ 没有那个文件或目录

但是当我尝试FTP/SFTP通过winscp/filezilla它连接时。

标签: javascript

解决方案


您只能使用 SFTP 在本地系统上运行命令。运行帮助以查看可用的命令:

sftp>帮助

我认为du命令行中的 sftp 不可用,您需要使用 ssh 代替

你可以只使用 SSH 但如果 JS 是必须的 ssh-exec 应该可以工作

未经测试,但应该非常接近

npm i ssh-exec

创建文件 ssh.js

粘贴 :

var exec = require('ssh-exec')

//option  1  requires id_rsa as private key
 exec('ls -lh', 'ubuntu@my-remote.com').pipe(process.stdout)

// option 2 
//USE  ENV VAR LIKE $MY_PWORD DONT HARDCODE PW
exec('du -sh /PATH/TO/DIIR', {
  user: '"userName",
  host: 'my-remote.com',
  key: myKeyFileOrBuffer,
  password: '$MY_PWORD' 
}).pipe(process.stdout)

/// option 3 what you are trying to do with sftp
exec('ls -lh', 'ubuntu@my-remote.com', function (err, stdout, stderr) {
  console.log(err, stdout, stderr)
})

推荐阅读