合宙Air780E|FTP|内网穿透|命令测试|LuatOS-SOC接口|官方demo|学习(18):FTP命令及应用

news2024/10/6 12:34:46

1、FTP服务器准备

本机为win11系统,利用IIS搭建FTP服务器。

搭建方式可参考博文:windows系统搭建FTP服务器教程

windows系统搭建FTP服务器教程_程序员路遥的博客-CSDN博客_windows服务器安装ftp

设置完成后,测试FTP(已正常访问,测试ls列出服务器上的文件):

外网IP映射至本地FTP服务器(采用小米球做内网端口映射)。

 可参考

  1. 小米球官网:Ngrok国内免费服务器-小米球ngrok
  2. 博文:小米球外网映射本地tomcat

小米球外网映射本地tomcat_lanren312的博客-CSDN博客

2、FTP Demo main.c代码及解析:

                print(ftp.login(nil,"ngrok2.xiaomiqiu123.top",*****,"m***********n","***********").wait())

        print(ftp.command("NOOP").wait()) --此命令不产生什么实际动作,它仅使服务器返回OK。
        print(ftp.command("SYST").wait()) --FTP提供SYST和STAT命令。其中,SYST命令用来获取服务器的操作系统,
                                          --STAT用于获取当前程序和目录信息。这两个命令的信息默认不显示。
                                          --NMAP的ftp-syst脚本通过向FTP服务器发送这两个命令,并解析返回信息,而获取相关信息,如操作系统类型、FTP配置信息等。
        print(ftp.command("TYPE I").wait())  --设置编码类型为I
        print(ftp.command("PWD").wait()) --返回指定 FTP 连接的当前目录名称
        print(ftp.command("MKD QWER").wait()) --创建路径 QWER
        print(ftp.command("CWD /QWER").wait()) --改变工作目录,即改变当前所在位置至/QWER(服务器分配的文件夹路径)

        print(ftp.command("CDUP").wait()) --把当前目录改变为 FTP 服务器上的父目录
        print(ftp.command("RMD /QWER").wait()) --删除路径 QWER(QWER为空状态)
        sys.wait(1000)
        --錯誤提示:net_lwip_tcp_err_cb 637:adapter 1 socket 3 not closing, but error -13 待报issue;
        --print(ftp.command("LIST").wait()) --目录列表工具,能够列出FTP、本地磁盘上的目录内容,输出格式可以是树型图,也可以是URL、HTML、带格式文本文件等形式
        --提示false,pull不成功,原因待查!
        print(ftp.pull("/1222.txt","/1222.txt").wait()) --FTP文件下载(服务器中必须先有1222.txt)

        local f = io.open("/1222.txt", "r")
        if f then
            local data = f:read("*a")
            f:close()
            log.info("fs", "writed data", data)
        else
            log.info("fs", "open file for read failed")
        end

        print(ftp.command("DELE /12222.txt").wait()) --删除服务器上的文件
        print(ftp.push("/1222.txt","/12222.txt").wait()) --上传文件1222-1.txt至服务器根目录,改名为12222.txt
        print(ftp.close().wait()) --关闭FTP服务器
        log.info("meminfo", rtos.meminfo("sys"))  --显示内存情况

log文件:

[2023-02-23 22:23:02.699] DBG: ap log port COM13打开成功

[2023-02-23 22:23:02.724] DBG: soc log port COM11打开成功

[2023-02-23 22:23:02.863][000000000.229] I/pm pm mode 1

[2023-02-23 22:23:02.866][000000000.230] I/pm poweron: Power/Reset

[2023-02-23 22:23:02.869][000000000.230] I/main LuatOS@EC618 base 22.12 bsp V1103 32bit

[2023-02-23 22:23:02.873][000000000.230] I/main ROM Build: Feb  3 2023 14:22:10

[2023-02-23 22:23:02.878][000000000.239] D/main loadlibs luavm 204792 14152 14152

[2023-02-23 22:23:02.884][000000000.239] D/main loadlibs sys   300416 52896 53088

[2023-02-23 22:23:02.889][000000000.448] self_info 113:model Air780E imei 861551056******

[2023-02-23 22:23:03.249][000000000.917] D/mobile CSCON 1

[2023-02-23 22:23:04.290][000000001.943] D/mobile NETIF_LINK_ON -> IP_READY

[2023-02-23 22:23:04.292][000000001.947] D/DNS ngrok2.xiaomiqiu123.top state 0 id 1 ipv6 0 use dns server2, try 0

[2023-02-23 22:23:04.328][000000001.984] I/DNS dns all done ,now stop

[2023-02-23 22:23:04.721][000000002.376] true

[2023-02-23 22:23:04.814][000000002.484] 200 NOOP command successful.

[2023-02-23 22:23:04.925][000000002.586] 215 Windows_NT

[2023-02-23 22:23:05.036][000000002.704] 200 Type set to I.

[2023-02-23 22:23:05.177][000000002.837] 257 "/" is current directory.

[2023-02-23 22:23:05.288][000000002.944] 257 "QWER" directory created.

[2023-02-23 22:23:05.400][000000003.054] 250 CWD command successful.

[2023-02-23 22:23:05.494][000000003.160] 250 CDUP command successful.

[2023-02-23 22:23:05.602][000000003.268] 250 RMD command successful.

[2023-02-23 22:23:12.871][000000010.528] net_lwip_tcp_err_cb 637:adapter 1 socket 1 not closing, but error -13

[2023-02-23 22:23:23.382][000000021.042] D/mobile CSCON 0

[2023-02-23 22:23:28.772][000000026.436] D/mobile CSCON 1

[2023-02-23 22:23:39.035][000000036.693] D/mobile CSCON 0

[2023-02-23 22:23:42.982][000000040.636] false

[2023-02-23 22:23:42.986][000000040.642] I/user.fs    writed data     

[2023-02-23 22:23:43.027][000000040.695] D/mobile CSCON 1

[2023-02-23 22:23:43.886][000000041.552] 550-Data channel timed out.

 Win32 error:   The network connection was aborted by the local system.

 Error details: Data channel timed out.

550 End

550-The system cannot find the file specified.

 Win32 error:   The system cannot find the file specified.

 Error details: File system returned an error.

550 End


[2023-02-23 22:23:43.995][000000041.662] E/ftp data_netc already create

[2023-02-23 22:23:43.999][000000041.664] false

[2023-02-23 22:23:44.104][000000041.769] 221 Goodbye.

[2023-02-23 22:23:44.106][000000041.770] I/user.meminfo        300416    59128      63812

PS:ftp - ftp 客户端函数说明

ftp.login(adapter,ip_addr,port,username,password)

FTP客户端

参数

传入值类型

解释

int

适配器序号, 只能是socket.ETH0, socket.STA, socket.AP,如果不填,会选择平台自带的方式,然后是最后一个注册的适配器

string

ip_addr 地址

string

port 端口,默认21

string

username 用户名

string

password 密码

bool/table

是否为ssl加密连接,默认不加密,true为无证书最简单的加密,table为有证书的加密
server_cert 服务器ca证书数据
client_cert 客户端ca证书数据
client_key 客户端私钥加密数据
client_password 客户端私钥口令数据

返回值

返回值类型

解释

bool/string

成功返回true 失败返回string

例子

ftp_login = ftp.login(nil,"xxx")


ftp.command(cmd)

FTP命令

参数

传入值类型

解释

string

cmd 命令 目前支持:NOOP SYST TYPE PWD MKD CWD CDUP RMD DELE LIST

返回值

返回值类型

解释

string

成功返回true 失败返回string

例子

    print(ftp.command("NOOP").wait())

    print(ftp.command("SYST").wait())

    print(ftp.command("TYPE I").wait())

    print(ftp.command("PWD").wait())

    print(ftp.command("MKD QWER").wait())

    print(ftp.command("CWD /QWER").wait())

    print(ftp.command("CDUP").wait())

    print(ftp.command("RMD QWER").wait())

   print(ftp.command("DELE /1/12222.txt").wait())


ftp.pull(local_name,remote_name)

FTP文件下载

参数

传入值类型

解释

string

local_name 本地文件

string

remote_name 服务器文件

返回值

返回值类型

解释

bool/string

成功返回true 失败返回string

例子

ftp.pull("/1222.txt","/1222.txt").wait()


ftp.push(local_name,remote_name)

FTP文件上传

参数

传入值类型

解释

string

local_name 本地文件

string

remote_name 服务器文件

返回值

返回值类型

解释

bool/string

成功返回true 失败返回string

例子

ftp.push("/1222.txt","/1222.txt").wait()


ftp.close()

FTP客户端关闭

参数

返回值

返回值类型

解释

bool/string

成功返回true 失败返回string

例子

ftp.close().wait()

待解决问题:

1、 --錯誤提示:net_lwip_tcp_err_cb 637:adapter 1 socket 3 not closing, but error -13 待报issue;

        --print(ftp.command("LIST").wait()) --目录列表工具,能够列出FTP、本地磁盘上的目录内容,输出格式可以是树型图,也可以是URL、HTML、带格式文本文件等形式

2、执行pull时,--提示false,pull不成功,原因待查!

        print(ftp.pull("/1222.txt","/1222.txt").wait()) --FTP文件下载

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/366335.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Nginx配置代理解决本地html进行ajax请求接口跨域问题

场景 Nginx在Windows下载安装启动与配置前后端请求代理: Nginx在Windows下载安装启动与配置前后端请求代理_霸道流氓气质的博客-CSDN博客 上面基于Vue的web项目进行代理请求后台接口。 如果是进行异地接口联调,访问后台接口都需要通过vpn访问&#x…

【Maven】(二)使用 Maven 创建并运行项目、聊聊 POM 中的坐标与版本号的规则

文章目录1.前言2.hello-world2.1.Archetype 创建2.2.使用 IDE 创建2.3.Maven的目录结构3.pom的基本组成3.1.Maven坐标的概念与规则3.2.版本号规则2.3.打包成可运行的JAR4.结语1.前言 本系列文章记录了从0开始到实战系统了解 Maven 的过程,Maven 系列历史文章&#…

注意啦!如何通过广告吸引客户直接下单?

2023年跨境电商越来越突出,据业内相关人士称,在未来几年与跨境电商相关的政策仍会继续倾斜甚至加大力度,因此各行各业都响应政策,在新政策落实之前致力于平台的转型升级,做新时代创新型的高质量发展,其实细…

怎么找回电脑上删除的图片?

怎么找回电脑删除的图片?图片作为一种非常简单方便的文件,经常被用来辅助我们的日常工作和学习。但在我们整理电脑时,如果我们不小心手一抖就删除了一些重要的图片,遇到这种事我们要如何才能恢复呢? 众所周知,简单的删除并不会完…

iOS 绿幕技术

绿幕(green screen)技术,又称 chroma key effect,实际上是将图片上指定颜色设置为透明的图形处理技术,这些透明区域也可以被任意背景图片替换。 这种技术在 视频合成中被广泛使用。iOS 中,通过 CoreImage …

LeetCode 622.设计循环队列

设计你的循环队列实现。 循环队列是一种线性数据结构,其操作表现基于 FIFO(先进先出)原则并且队尾被连接在队首之后以形成一个循环。它也被称为“环形缓冲器”。循环队列的一个好处是我们可以利用这个队列之前用过的空间。在一个普通队列里&a…

flask框架(下)

文章目录flask框架(下)werkzeug简介请求上下文flask 处理方案回到 wsgi_app 方法中push 源码总结补充flask框架(下) werkzeug简介 Werkzeug是一个WSGI工具包,他可以作为一个Web框架的底层库。这里稍微说一下, werkzeug 不是一个web服务器,也…

Java Stream、File、IO 超详细整理,适合新手入门

目录 Java Stream Java File Java IO Java Stream Java Stream 是 Java 8 中引入的一种新的抽象数据类型,它允许开发人员使用函数式编程的方式来处理集合数据。 使用 Java Stream 可以方便地进行过滤、映射、排序和聚合等操作。下面是一个简单的示例:…

10分钟快速入门Pandas库

pandas 是基于NumPy 的一种工具,该工具是为解决数据分析任务而创建的,这篇文章主要介绍了10分钟快速入门Pandas库,重点介绍pandas常见使用方法,结合实例代码介绍的非常详细,需要的朋友可以参考下目录Pandas的介绍pandas 是基于Num…

其实一点不难学会这三步一定让你学会制作一个『3D建模』大屏

上次已经教过大家怎样制作一个简单的2D数据可视化大屏~那有一些朋友们就会说那些炫酷的3D可视化大屏是怎样制作的呢?这不就来了,今天就教大家怎样用山海鲸可视化软件制作一个带3D建模的可视化大屏,并且最重要的是无需会特别复杂的3D建模知识。…

数据结构与算法之爬楼梯动态规划

一.题目(爬楼梯)假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?注意:给定 n 是一个正整数。示例 1:输入: 2输出: 2解释: 有两种方法可以爬…

playQueue 和 segmentQueue解析

文章目录 前提分析时序图常见问题结论前提 一个playlist有4段每段大概2秒每段走http下载大概500ms每段大小500KB左右分析时序图 如果网络情况很理想的话,基本上一直保持在playQueue为4,segmentQueue为1。如果网络特别差的情况下,基本上playQueue为1,segmentQueue为4。当网络…

中科检测赴中科院广州电子CASAIM开展座谈会,围绕3D打印、三维扫描和精密测量展开深入交流

2月9日,中科检测技术服务(广州)股份有限公司(简称:中科检测)一行到访中科院广州电子技术有限公司,参观广东省增材制造工程实验室和三维扫描及精密测量重点实验室,就3D打印、三维扫描和精密测量相关技术内容…

2022年全国职业院校技能大赛(中职组)网络安全竞赛试题A(7)

目录 模块A 基础设施设置与安全加固 一、项目和任务描述: 二、服务器环境说明 三、具体任务(每个任务得分以电子答题卡为准) A-1任务一:登录安全加固 1.密码策略(Windows,Linux) a.设置最…

2023年排名前茅的十大饭店装修设计!

相信大家都是知道的,饭店装修设计其实是一门很深的学问,只有掌握这门学问才能够打造出来精美的空间,因此饭店装修必须要有专业餐饮设计公司的设计师进行设计。但是在国内饭店装修设计公司那么多,饭店老板要如何选择呢?…

C语言--指针进阶1

目录回顾字符指针指针数组数组指针&数组名和数组名的区别数组指针的使用指针作为形参练习数组参数、指针参数一维数组传参二维数组传参一级指针传参二级指针传参回顾 指针的内容,我们在初级阶段已经有所涉及了,我们先来复习一下 指针就是个变量&am…

关于举办2023年中国可持续塑料峰会的通知

根据麦肯锡报道,如果塑料需求按照目前的趋势发展,到2030年,全球塑料废物量将从2016年的每年2.6亿吨增加到每年4.6亿吨,使已经严重的环境问题上升到一个全新的水平。目前世界塑料年产量超过3亿吨,为社会生产生活带来巨大…

数据结构与算法之最短路路径与最短路径和动态规划

If every unfolding we experience takes us further along in life, then, we are truly experiencing what life is offering.如果我们在人生中体验的每一次转变都让我们在生活中走得更远,那么,我们就真正的体验到了生活想让我们体验的东西。Do not tr…

【Java|golang】 1238. 循环码排列---格雷编码

给你两个整数 n 和 start。你的任务是返回任意 (0,1,2,…,2^n-1) 的排列 p,并且满足: p[0] start p[i] 和 p[i1] 的二进制表示形式只有一位不同 p[0] 和 p[2^n -1] 的二进制表示形式也只有一位不同 示例 1: 输入:n 2, start …

Linux基础命令-netstat显示网络状态

文章目录 netstat 命令介绍 语法格式 基本参数 显示各列内容分析 1)netstat -a显示各列内容分析 2)netstat -r显示各列内容分析 3)netstat -i 显示各列内容分析 参考实例 1)显示系统网络状态的所有连接 2)…