在linux下我使用wget下载我板子上的文件:
板子上实际位置为:/opt/joseph/av_server/av_server
wget ftp://10.10.1.216:21/joseph/av_server/av_server
{
--2014-09-04 16:11:59-- ftp://10.10.1.216/joseph/av_server/av_server
=> `av_server'Connecting to 10.10.1.216:21... connected.
Logging in as anonymous ... Logged in!
==> SYST ... done. ==> PWD ... done.
==> TYPE I ... done. ==> CWD (1) /joseph/av_server ... done.
==> SIZE av_server ... 2546188
==> PASV ... done. ==> RETR av_server ... done.
Length: 2546188 (2.4M) (unauthoritative)
100%[==================================================================================================================>] 2,546,188 3.37M/s in 0.7s
2014-09-04 16:12:00 (3.37 MB/s) - `av_server' saved [2546188]
}
解析一下ftp下载url格式:
ftp://admin:123456@qycam.com:50005/hi3518c_tmp/av_server.708.wifi
ftp://用户名:密码@主机地址:端口号/文件位置以及文件名称
1、我的平台是hi3518x,我使用的busybox1.6.1:
首先,我们运行ftpd,出现下面的提示:
BusyBox v1.6.1 (2014-09-04 14:45:17 CST) multi-call binary.
Usage: ftpd [-wvS] [-t N] [-T N] [DIR]
Anonymous FTP server
ftpd should be used as an inetd service.
ftpd's line for inetd.conf:
21 stream tcp nowait root ftpd ftpd /files/to/serve
It also can be ran from tcpsvd:
tcpsvd -vE 0.0.0.0 21 ftpd /files/to/serve
-w Allow upload
-v Log errors to stderr. -vv: verbose log
-S Log errors to syslog. -SS: verbose log
-t,-T Idle and absolute timeouts
DIR Change root to this directory
上面加颜色的两行都是可以运行起ftpd服务器的,但是建议使用第二种 ,第一种,需要一个配置文件,利用inetd进行运行
在busybox1.6.1上我使用flashfxp进行访问的ftpd板子的时候,不能显示文件列表,最后发现是busybox的bug,此bug如下:
具体原因是把“LIST -al”,把这个命令的al看成一个目录了,那么我们可以进行修改,也可以直接使用busybox最新稳定版本:
busybox官网:
http://www.busybox.net/
我的效果如下图:
[root@njqy]#cat /etc/init.d/rcS
#! /bin/sh
/bin/mount -a
echo "
_ _ _ _ _ _ _ _ _ _ _ _
\ _ _ _ _ _ ___
/ /__/ \ |_/
/ __ / - _ ___
/ / / / / /
_ _ _ _/ / / \_/ \_ ______
___________\___\__________________
"
for initscript in /etc/init.d/S[0-9][0-9]*
do
if [ -x $initscript ] ;
then
echo "[RCS]: $initscript"
$initscript
fi
done
/bin/hostname -F /etc/sysconfig/HOSTNAME
cd /opt/joseph
./start.sh &
cd -
tcpsvd -vE 0.0.0.0 21 ftpd -wvS /opt/ &
flashfxp的效果如下图:
2、我们借鉴一下:
首先,在开发板建立一个目录用于传输文件的存放:
mkdir /ftpdir
修改inetd.conf并启动inetd服务:
# vi /etc/inetd.conf
21 stream tcp nowait root ftpd ftpd -w /ftpdir
# inetd // inetd会执行/etc/inetd.conf脚本中
此时ftpd服务可以运行了。我们来验证一下:
在ubuntu中使用ftp命令连接开发板:
root@ubuntu:/home/yj423# ftp 192.168.0.200
Connected to 192.168.0.200.
220 Operation successful
Name (192.168.0.200:yj423): root
230 Operation successful
Remote system type is UNIX.
Using binary mode to transfer files.
ftp>
这时候,通过ps命令可以在开发板中看到如下进程:
917 root 3144 S ftpd -w /ftpdir
可以看到ftpd自动运行起来了。
我们通过PC上传文件试一试:
ftp> put /home/yj423/nfswork/home/bgm/bcs bcs
local: /home/yj423/nfswork/home/bgm/bcs remote: bcs
200 Operation successful
150 Ok to send data
到开发板中检查一下,我们看到了bcs的身影。
[root@BGM /ftpdir]#ls
addcmd bcs fdsafdsfsa mount.sh test