温馨提示×

linux sftp能自动化吗

小樊
42
2026-09-14 04:44:06
栏目: 智能运维

可以的,Linux 下的 SFTP 完全可以自动化,常见做法有几种,按“推荐程度 + 场景”给你梳理一下:


一、最推荐:使用 sftp + 批处理模式(非交互)

sftp 本身支持 批处理脚本,不需要人工输入命令。

示例

sftp -b batch.txt user@host

batch.txt 内容:

cd /remote/path
put localfile.txt
get remotefile.txt
bye

✅ 优点

  • 原生支持
  • 不需要额外工具
  • 适合简单定时任务

❌ 缺点

  • 密码登录不方便(建议用 SSH 密钥)

二、SSH 密钥 + cron 定时执行(最常用)

配合上面方式,实现完全无人值守:

ssh-keygen -t rsa
ssh-copy-id user@host

然后:

crontab -e
0 2 * * * sftp -b /path/batch.txt user@host

✅ 完全自动化
✅ 安全(无明文密码)


三、使用 lftp(功能更强)

lftp 支持 SFTP,且脚本能力更强。

lftp sftp://user@host -e "put file.txt; bye"

或脚本:

lftp -f script.lftp

✅ 支持镜像、断点续传
✅ 更适合复杂任务


四、使用 expect(不推荐但可用)

当你必须用密码登录时:

expect -c '
spawn sftp user@host
expect "password:"
send "yourpassword\r"
interact
'

⚠ 不安全(密码明文)
⚠ 维护麻烦


五、程序化方式(进阶)

  • Python:paramiko / pysftp
  • Shell + sshpass(不推荐)
  • CI/CD(GitLab / Jenkins)

总结建议

场景 推荐方案
简单定时上传 sftp -b + 密钥
复杂同步 lftp
必须用密码 expect(临时用)
开发集成 Python

如果你愿意,可以告诉我:

  • 是 上传还是下载
  • 是否 能用密钥
  • 是否 定时执行

我可以直接帮你写一套可用脚本。

0 踩