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

如何用MikroTik /tool fetch不存文件上传图片变量至FTP并定时执行

问题解决:MikroTik脚本中转HTTP图片到FTP(不写入ROM)

你的核心需求是避免频繁写入ROM损坏设备,同时实现每分钟从HTTP拉取图片并上传FTP,原脚本无法工作的原因是**/tool fetch上传模式仅支持本地文件路径,不能直接传入内存变量**。以下是可行的解决方案:

核心思路

利用RouterOS的**内存临时目录(/tmp)**作为中转,这个目录存储在RAM中,写入操作不会损伤ROM,重启后自动清空,完全适配高频临时文件操作场景。

完整脚本实现

单步执行脚本

# 1. 从HTTP下载图片到内存临时文件
/tool fetch user="user" password="password" url="http://192.168.1.1/image.jpg" mode=http dst-path="/tmp/temp_image.jpg"

# 2. 从内存临时文件上传至FTP
/tool fetch address="my.ftp.com" src-path="/tmp/temp_image.jpg" user=ftpuser mode=ftp password=ftppassword dst-path="/ftpimage.jpg" upload=yes

# 可选:删除临时文件(下次执行会自动覆盖,也可省略此步)
/file remove "/tmp/temp_image.jpg"

添加每分钟调度器

将脚本加入调度器,实现自动周期性执行:

/system scheduler add 
    name="ftp_image_uploader" 
    interval=1m 
    on-event="
/tool fetch user=\"user\" password=\"password\" url=\"http://192.168.1.1/image.jpg\" mode=http dst-path=\"/tmp/temp_image.jpg\"
/tool fetch address=\"my.ftp.com\" src-path=\"/tmp/temp_image.jpg\" user=ftpuser mode=ftp password=ftppassword dst-path=\"/ftpimage.jpg\" upload=yes
/file remove \"/tmp/temp_image.jpg\"
" 
    start-time=startup

关键说明

  1. 内存目录验证:如果设备中没有/tmp目录,手动创建内存盘(根据图片大小调整容量):
    /disk add name=tmp type=ram size=1M
    
  2. 变量限制规避:RouterOS脚本无法直接将内存中的二进制数据传入FTP上传命令,内存临时文件是目前唯一可行的无ROM写入中转方案。
  3. 调度器引号转义:调度器的on-event参数是字符串,内部的双引号必须用反斜杠\"转义,否则会导致脚本解析错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 09:23:14