最近在做Linux应用层相关的工作,主要涉及要需要用到ftp来获取最新的固件用于升级。这里简单记录一下:
1.ubuntu本身不带ftpget命令,如果要使用ftpget和ftpput等命令需要先建立软链接!!!!
ln -s /bin/busybox ftpget
2.使用ftpget下载文件
/*
username : ftp的用户名
password : ftp的用户名密码
127.0.0.1 : 填入ftp服务器的ip
localfile : 存放本地的文件名
remotefile : ftp服务器的文件名
*/
ftpget -u username -p password 127.0.0.1 localfile remotefile
3.使用ftpput 上传文件
/*
username : ftp的用户名
password : ftp的用户名密码
127.0.0.1 : 填入ftp服务器的ip
local_upload_file : 上传的文件名
*/
ftpput -u username -p password 127.0.0.1 local_upload_file
4.测试软代码如下:
首先先在该目录下执行ln -s /bin/busybox ftpget 指令,执行该指令后,我们会发现当前的文件夹中会出现一个ftpget的可执行程序
接下来就是编写代码了,代码如下所示
ftp_test.c
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <sys/stat.h>
//以下定义根据自己的ftp服务器信息填写
#define FTP_USERNAME "test"
#define FTP_PASSWORD "test"
#define FTP_SERVER_IP "127.0.0.1"
#define LOCAL_FILE_NAME "t.txt"//
#define REMOTE_FILE_NAME "/test/test.txt"
int ftp_down_file( char *username, char *password, char *ftp_server_ip,char *local_file, char *remote_file)
{
char tmp[256]={0};
sprintf(tmp, "./ftpget -u %s -p %s %s %s %s", username, password, ftp_server_ip, local_file, remote_file);
system(tmp);
return 0;
}
int main(int argc,char *argv[])
{
//将远程“/test/test.txt”的文件下载下来,存在当前文件夹,并命名为t.txt
system("ls -l");
ftp_down_file(FTP_USERNAME,FTP_PASSWORD,FTP_SERVER_IP,LOCAL_FILE_NAME,REMOTE_FILE_NAME);
system("ls -l");
return 0;
}
程序执行如下图所示:t.txt即是我们从远程服务器上下载下来的文件。