gpt4 book ai didi

javascript - 如何打开持久的 SSH 客户端来制作基于 Web 的文件管理器?

转载 作者:行者123 更新时间:2023-11-30 19:24:28 28 4
gpt4 key购买 nike

我目前正在使用 shelljs 在每次需要使用 ssh 功能时建立连接。

class Connection {
constructor(id, path) {
this.id = id;
this.path = path;
}

exec(silent, ...args) {
const { exec } = shellJS;
const execCmd = exec(
['ssh ', ...args].join(' '),
{ silent }
);
// FormError(execCmd);
return execCmd;
}
}

class FileManager {
constructor(connection) {
this.connection = connection;
}

async ls(path = '') {
const newPath = path ? `'${path}/'` : '';
const listing = this.connection.exec(false, `"ls -l ${newPath}"`);
return parseEntries(listing.stdout);
}
}

EDIT1: brad 回答后,Mounting 可能无法在这里工作,因为

  1. 我们对该服务器的访问权限非常有限(不确定它是否可以安装)
  2. 这里的代码有些简化。真正的流程是:

    Local -> SSH Server
    -> AnAppThatManagesCloudBuckets <command>
    -> Output

最佳答案

您的代码容易受到命令注入(inject)的影响,并且本质上是不安全的,并且对于边缘情况可能不可靠,例如带有保留字符的路径/文件名。

我会推荐一种完全不同的方法。使用 SSHFS挂载远程文件系统。然后,使用标准的 Node.js fs API做你的目录列表等。

关于javascript - 如何打开持久的 SSH 客户端来制作基于 Web 的文件管理器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57062865/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com