You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Rust监控SFTP文件系统变更(无SSH访问权限)

监控SFTP文件系统变更的Rust实现问题

我需要监控SFTP上的文件系统变更,当有文件上传至目录或特定文件被修改时收到通知。用inotify-rs在本地文件系统运行正常,但无法适配SFTP环境。

尝试过的方案

  • 方案1:传入SFTP URI
let current_dir = std::path::Path::new("sftp://user@ip:port/path")
    .expect("Failed to determine current directory");

该方案未生效。

  • 方案2:使用ssh2 crate的SFTP连接对象
let tcp = TcpStream::connect(self.ip_with_port()).unwrap();
let mut sess = Session::new().unwrap();
sess.set_tcp_stream(tcp);
sess.handshake().unwrap();
sess.userauth_password(&self.user, &self.pwd)?;
let sftp = sess.sftp().unwrap();

let current_dir = sftp.realpath(std::path::Path::new("<path to sftp file>"))
    .expect("Failed to determine current directory");

该方案也未成功。

后续思路

考虑通过SFTP同步工具(如rsync、csync、lftp)寻找解决方向,但需要将其整合进Rust二进制文件中。

业务背景

我方有多个客户服务器使用产品,出于安全考虑仅能通过SFTP作为中间交互接口。当前需工程师逐个监控部署,耗费大量人力。希望通过监控SFTP变更实现集中管理,向SFTP发送含SQL查询等内容的JSON文件,供客户服务器读取执行。

内容的提问来源于stack exchange,提问作者Hamza Zubair

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 06:42:09