我目前使用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:**从布拉德回答后,安装将可能无法在这里工作,因为
1.我们对该服务器的访问非常有限(不确定是否可以挂载)
1.这里的代码有些简化。真实的的流程是:
Local -> SSH Server
-> AnAppThatManagesCloudBuckets <command>
-> Output
2条答案
按热度按时间zyfwsgd61#
您的代码会受到命令注入的影响,并且本质上是不安全的,并且对于边缘情况可能不可靠,例如带有保留字符的路径/文件名。
我会推荐一个完全不同的方法。使用SSHFS挂载远程文件系统。然后,使用标准的Node.js fs API来执行目录列表等操作。
e0uiprwp2#
经过进一步的研究,我们发现了3个可以用来在后台创建持久性SSH客户端的包:
正如@ChrisG所说。
ssh2
,基本上是用JS编写的SSH模块pty.js
一个伪终端模拟器node-pty
pty.js
的一个分支