关闭

ftp上传

218人阅读 评论(0) 收藏 举报

项目中要使用ftp上传文件,在linux下运行,思路是由加一个模块,定时读取上传任务,然后调用脚本上传文件

将工作中遇到的问题备忘一下。

1、linux下安装ftp服务

网上有很多方法,我用的是unbantu,用

全新安装:apt-get install vsftpd,重新安装:apt-get --reinstall install vsftp,卸载并清除配置文件:apt-get -purge remove vsftp

我在安装的过程中,服务器能访问外网ip,但访问不了域名,这是没配置域名服务器,在/etc/resolv.conf文件中增加

nameserver 8.8.8.8(也可用8.8.4.4,这些是谷歌的域名解析服务器)

安装后要配置用户和组

首先创建用户组 testFTP的主目录

groupadd test

mkdir /tmp/test

然后创建用户

useradd -G test -d /tmp/test -M usr1

useradd -G test -d /tmp/test -M usr2

设置用户密码

passwd usr1

然后会提示输入新密码,再确认一次就设置好密码了

接着改变文件夹的属主和权限

chown usr1.test /tmp/test ----这表示把/tmp/test的属主定为usr1

chmod 750 /tmp/test ----7表示wrx 5表示rx 0表示什么权限都没有

ftp默认端口是21,如果要修改端口,在vsftpd.conf 文件中增加listen_port=2121(这是你想要设置的端口号)

要实现上传除了目录有权限,还得在配置文件中write_enable=YES要打开

详细可参考:

http://www.linuxidc.com/Linux/2007-10/8062p3.htm

服务的启动、重启和停止

service  vsftpd start,service vsftpd restart,service vsftpd stop


解决vsftpd的530 Login incorrect错误

在etc下面有个pam.d文件夹,进去打开vsftpd这个文件,里面对之前的用户进行了限制,将里面对应的限制注释掉,问题解决。

227原来安装过vsftp,后来重新安装系统,安装vsftp总提示530
修改/etc/pam.d/vsftpd文件,屏蔽下面2行(红色),重启服务后OK

# Standard behaviour for ftpd(8).
#auth   required        pam_listfile.so item=user sense=deny file=/etc/ftpusers onerr=succeed


# Note: vsftpd handles anonymous logins on its own. Do not enable pam_ftp.so.


# Standard pam includes
@include common-account
@include common-session
@include common-auth
#auth   required        pam_shells.so

2、windws下使用serv-u比较方便

windows下的资源管理器下看不到ftp服务器上的文件,要在浏览器(不是资源管理器)的工具/internet选项/高级下,将启用FTP文件夹视图选中

3、登录ftp服务器

使用不同的服务器返回的代码是相同的,但文字有区别,比如登录成功,在linux下的server返回了230 Login successful.用win下返回了230 User logged in, proceed.

可以使用 || 进行2个条件的判断,

if [ "${RESULT_CON_WIN}" = "${SUCC_CON_WIN}" ] || [ "${RESULT_CON_LINUX}" = "${SUCC_CON_LINUX}" ]

注意 [ ]要有空格,

如果要判断一个字符串中是否有别一个字符串,可以这样

if [[ $RESULT == *$SUCC* ]]

这样可以c++调用脚本system可以得到返回值,判断是否成功

4、sqlite3数据库中有timespan类型的字段,

想用比较大小的sql放到xml中,然后根据id得到sql,但是将 < 放到xml中会破坏xml的结构,读不到的别的sql了,用转义字符也不行,别的id能读到,本id的sql读不出来。

不过原来的sql有使用转义的sql,要看一下怎么处理的。

这样只好将日期取出来,放到tm结构中,用mktime转换成time_t,然后与当前的时间比较


0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:18522次
    • 积分:483
    • 等级:
    • 排名:千里之外
    • 原创:29篇
    • 转载:16篇
    • 译文:0篇
    • 评论:0条