精华内容
下载资源
问答
  • linux上装FTP服务器

    2012-07-08 00:44:27
    yum install vsftpd http://os.51cto.com/art/201008/222036.htm
    展开全文
  • 按平常配置好了,但是在本地用FTP客户端不管怎么连接都连接不上,本地FTP客户端总提示连接失败,远程filezilla server的界面也没有提示有人连接, 仔细看了一下,原来那台服务器上的IIS中已经建立了FTP站点了,...

    公司一台服务器,上面装了filezilla server后,按平常配置好了,但是在本地用FTP客户端不管怎么连接都连接不上,本地FTP客户端总提示连接失败,远程filezilla server的界面也没有提示有人连接, 仔细看了一下,原来那台服务器上的IIS中已经建立了FTP站点了,原来如此,把filezilla server关掉,然后 进IIS上的FTP站点新建一个虚拟目录指向网站目录,然后 在本地FTP客户端中用户名和密码就用远程桌面的administrator登录, 登录后显示空白, 在地址栏上加上 /虚拟目录名/ 即可看到



    展开全文
  • linux(ip假如为11.11.0.1)从linux(ip假如为11.11.0.2)那么需要在11.11.0.2上装vsftp也就是ftp服务端,在11.11.0.1装ftp客户端, 下载地址http://download.csdn.net/detail/u012209894/9537732

    引言:

    windows ftp 循环获取文件夹的.bat脚本  linux ftp循环获取文件夹的shell脚本(即获取输入的两个时间段之间下发的文件)

    测试环境&&工具:

    linux(ip假如为11.11.0.1)从linux(ip假如为11.11.0.2)那么需要在11.11.0.2上装vsftp也就是ftp服务端,在11.11.0.1装ftp客户端。

    上述安装软件的下载地址http://download.csdn.net/detail/u012209894/9537732

    一、linux下获取文件夹

    PS:(文件夹用下面的方法wget获取,取文本文件用第四点的方法)

    #!/bin/sh
    ########################################################################
    # 脚本说明:绩效考核系统日终脚本文件
    # 此即可手工执行脚本,需要传入执行日期,也可自动执行
    #
    ########################################################################
    #(需要写死原先日期可写死TIMETMP即可,如你需要20150202当天的数据,重跑需删除jksj文件夹下当天的文件)
    set -e
    #自动获取昨天的日期
    TIMETMP=$(date -d"yesterday" +%Y%m%d)
    #手工输入昨天日期
    #read var
    #TIMETMP=$var
    #当天重跑获取昨天文件 需删除昨天文件数据
     if [ ! -e /xxpas/doload/jksj/ ]
            then
                mkdir -p /xxpas/doload/jksj/
          else
          cd /xxpas/doload/jksj/
          rm -rf $TIMETMP      
      fi         
    #系统当前日期
    SYSTIME=$(date '+%Y-%m-%d %H:%M:%S')
    NOWDATE=${SYSTIME:0:10}
    #NOWTIME=${SYSTIME:11:8}
    #三十天以前的日期
    tendays=$(date -d"30 days ago" +%Y%m%d)
    # 如果格式为:2010-07-07
    if test "${#TIMETMP}" = 10
    then
        YYY=${TIMETMP:0:4}
        MMM=${TIMETMP:5:2}
        DDD=${TIMETMP:8:9}
        INDATE=$YYY$MMM$DDD
    # 如果输入日期格式为:20100707
    else
        INDATE=$TIMETMP
    fi
    
    # 修改日期格式为:2010-07-07
    YYY=${INDATE:0:4}
    MMM=${INDATE:4:2}
    DDD=${INDATE:6:7}
    PROCDATE=$YYY"-"$MMM"-"$DDD
    YEARBEGIN=$YYY"-01-01"
    
    if [ "$PROCDATE" \< "$NOWDATE" ]
    then
    #脚本存放目录
        DATAPATH=/xxpas/doload    
    #初始化标记值为0
        LOADFLAG=0
    # 创建工作目录
        createWorkSpace()
        {
        if [ ! -e $DATAPATH"/jksj" ]
            then
                mkdir jksj
                # log 存放日志文件
                mkdir log
            else
                cd $DATAPATH"/jksj"
                if [ ! -e log ]
                then
                    mkdir log
                fi
        fi
            DATAPATH=$DATAPATH"/jksj"
        }
    
    #创建程序实现功能所需的目录空间
        createWorkSpace $DATAPATH
        LOGFILE=$DATAPATH"/log/xxjk_"$INDATE".log"
    #写日志
        WriteLog()
        {
            if [ ! -e $LOGFILE ]
            then
                touch $LOGFILE
            fi
            if [ "$1" != "" ]
            then
                echo $(date '+%Y-%m-%d %H:%M:%S')"=======>"$1 | tee -a $LOGFILE
            fi
        }
    # ftp download data ip 用户名 密码 自行更改 取前一天日期的文件夹
    wget -r -nH -P/xxpas/doload/jksj ftp://11.11.0.2"/"$INDATE  --ftp-user=admini1 --ftp-password=123
    cd $DATAPATH"/"$INDATE
    WriteLog "download ftp file is end."
    
    #tar -zxvf $FTPFILE_CORE -C /xxpas/doload/jksj"/"$INDATE
    #gunzip -n $FTPFILE_CORE
    WriteLog "download ftp file is success and tar file to jksj success"
    
    #删除10天前文件
    cd /xxpas/doload/jksj/log
    rm -f "xxjk_"$tendays".log"
    WriteLog "remove ten days before log file successfully"
    cd /xxpas/doload/jksj
    rm -rf $tendays
    WriteLog "remove ten days before sjff file successfully"
    LOADFLAG=1
    else
    WriteLog "download ftp file is fail,please check the ftp file is exist?"
    LOADFLAG=0
    fi

    二、linux上FTP使用手动输入日期循环取数据

    (即输入开始日期和结束日期,从而取该时间段下发的所有文件,用于追漏发或者需要更正的数据)

    #!/bin/sh
    ########################################################################
    # 此即可手工执行脚本,需要传入执行日期,也可自动执行
    #存放脚本目录:/home/pasdb/doload (没有就新建)
    ########################################################################
    set -e
    ORGCODE=883000
    # 自动输入前一天的日期
    #TIMETMP=$(date -d"yesterday" +%Y%m%d)
    echo -n "please enter the datebeg:"
    read var
    echo -n "please enter the dateend and waiting:"
    read endvar
    datebeg=$var
    dateend=$endvar
    #是你电脑左上角1前面的点 不是单引号
    beg_s=`date -d "$datebeg" +%s`
    end_s=`date -d "$dateend" +%s`
    while [ "$beg_s" -le "$end_s" ]  
        do
    TIMETMP=$(date -d "@$beg_s" +%Y%m%d)      
    #liulei 20160531 add end
    #重跑需删除当天文件数据
     if [ ! -e /home/pasdb/doload/pasdata/jksj/ ]
        then
        mkdir -p /home/pasdb/doload/pasdata/jksj/
     else
        cd /home/pasdb/doload/pasdata/jksj/
        rm -rf $TIMETMP
     fi
    #系统当前日期
    SYSTIME=$(date '+%Y-%m-%d %H:%M:%S')
    NOWDATE=${SYSTIME:0:10}
    NOWTIME=${SYSTIME:11:8}
    #十天以前的日期
    tendays=$(date -d"30 days ago" +%Y%m%d)
    # 如果格式为:2010-07-07
    if test "${#TIMETMP}" = 10
    then
        YYY=${TIMETMP:0:4}
        MMM=${TIMETMP:5:2}
        DDD=${TIMETMP:8:9}
        INDATE=$YYY$MMM$DDD
    # 如果输入日期格式为:20100707
    else
        INDATE=$TIMETMP
    fi
    
    # 修改日期格式为:2010-07-07
    YYY=${INDATE:0:4}
    MMM=${INDATE:4:2}
    DDD=${INDATE:6:7}
    PROCDATE=$YYY"-"$MMM"-"$DDD
    
    if [ "$PROCDATE" \< "$NOWDATE" ]
    then
    #脚本存放目录
        DATAPATH=/home/pasdb/doload
    #FTP信息:IP地址:FTPIP;用户名:FTPNAME;密码:FTPPWD;FTP目录:FTPDATAPATH;FTP保存文件名:FTPFILE
        FTPIP="11.11.0.2"
        FTPNAME="test"
        FTPPWD="test"
        FTPDATAPATH="/home/sjff/sdata/S-999000/CORE/ADD/"$INDATE
        FTPFILE_CORE="CORE_"$ORGCODE"_"$INDATE"_ADD.tar.Z"
    #初始化标记值为0
        LOADFLAG=0
    
    # 创建工作目录
        createWorkSpace()
        {
          if [ ! -e $DATAPATH"/addpasdata" ]
            then
                mkdir addpasdata
                cd addpasdata
                # dbresult 存放执行结果
                mkdir dbresult
                # zipdata 存放ftp下载的zip数据文件
                mkdir zipdata
                mkdir zipdata/sjff
                mkdir zipdata/sjff"/"$INDATE
                # unzipdata 存放执行当天M包解压临时存放目录
                mkdir unzipdata
                # log 存放日志文件
                mkdir log
                #CORE 存放CORE日志文件
                mkdir CORE
                mkdir jksj
                mkdir jksj"/"$INDATE            
            else
                cd $DATAPATH"/addpasdata"
    
                if [ ! -e dbresult ]
                then
                    mkdir dbresult
                fi
    
                if [ ! -e zipdata ]
                then
                    mkdir zipdata
                fi
                if [ ! -e zipdata/sjff ]
                then
                    mkdir zipdata/sjff
                fi
                if [ ! -e zipdata/sjff/$INDATE ]
                then
                    mkdir zipdata/sjff/$INDATE
                fi
                if [ ! -e unzipdata ]
                then
                    mkdir unzipdata
                fi
                if [ ! -e log ]
                then
                    mkdir log
                fi
                if [ ! -e jksj/$INDATE ]
                then
                mkdir jksj/$INDATE
                fi
           fi
            DATAPATH=$DATAPATH"/addpasdata"
        }
    
    #创建程序实现功能所需的目录空间
        createWorkSpace $DATAPATH
        LOGFILE=$DATAPATH"/log/CORE_"$INDATE".log"
    #写日志 
        WriteLog()
        {
            if [ ! -e $LOGFILE ]
            then
                touch $LOGFILE
            fi
            if [ "$1" != "" ]
            then
                echo $(date '+%Y-%m-%d %H:%M:%S')"=======>"$1 | tee -a $LOGFILE
            fi
        }
    
    # ftp download data
    /usr/bin/ftp -n<<!
    open $FTPIP
    user $FTPNAME $FTPPWD
    binary
    prompt off
    cd $FTPDATAPATH
    lcd $DATAPATH"/zipdata/sjff/"$INDATE
    mget "$FTPFILE_CORE"
    bye
    !
    cd $DATAPATH"/zipdata/sjff/"$INDATE
    WriteLog "download ftp file is end."
    if [ ! -f "$FTPFILE_CORE" ]
    then
    #chmod 777 "$INDATE"
    tar -zxvf $FTPFILE_CORE -C /home/pasdb/doload/addpasdata/unzipdata
    WriteLog "download ftp file is success and tar file to unzipdata success"
    mv "/home/pasdb/doload/addpasdata/unzipdata/CORE_BWFMATMD_"$INDATE"_ADD_883.del" /home/pasdb/doload/addpasdata/jksj"/"$INDATE/BWFMATMD.DEL
    cp /home/pasdb/doload/addpasdata/jksj"/"$INDATE/BWFMATMD.DEL                     /home/pasdb/doload/pasdata/jksj"/"$INDATE/
    
    WriteLog "copy required file to jksj success"
    #验证文件是否齐全
    cd /home/pasdb/doload/addpasdata/jksj"/"$INDATE
    if [ 1 = $(ls -A | wc -l) ]
    then
    rm -f *.del
    WriteLog "today add jksj file complete data"
    fi
    cd /home/pasdb/doload/addpasdata/unzipdata
    rm -f *.del
    WriteLog "delete unzipdata file successfully"
    cd /home/pasdb/doload/addpasdata/log
    rm -f "CORE_"$tendays".log"
    WriteLog "remove ten days before log file successfully"
    cd /home/pasdb/doload/addpasdata/zipdata/sjff
    rm -rf $tendays
    WriteLog "remove ten days before sjff file successfully"
    LOADFLAG=1
    else
    WriteLog "download ftp file is fail,please check the ftp file is exist?"
    LOADFLAG=0
    fi				
    fi
     beg_s=$((beg_s+86400))
    done

    三、windows下循环获取文件脚本

    ::windwos上循环取数(思路和第二点的一致)目前只能想到日期范围在一个月以内的,因为windowns上的日期date算超出月外的就比较繁琐了
    @echo on
    ::------------------------------------------------------------------
    :: example :call test.bat 20160101 20160110
    ::------------------------------------------------------------------
    
    
    setlocal enabledelayedexpansion
    set  startdate=%1
    set  enddate=%2
    set FTP_SERVER=11.11.0.2
    set FTP_USER=admin1
    set FTP_PASSWORD=admin1
    echo 当前输入日期为1:%startdate%
    rem pause
    set dy=%startdate:~,4%
    set dm=%startdate:~4,2%
    set dd=%startdate:~6,2%
    echo 当前输入日期为:%dy%%dm%%dd%
    set StartTime=%Time:~0,2%:%Time:~3,2%:%Time:~6,2%
    rem pause
    set PAS_DATE=%dy%%dm%%dd%
    :start
    D:
    set PAS_ROOT=D:\DATA\JKSJ
    if not exist %PAS_ROOT% mkdir %PAS_ROOT%
    set FTP_CMD_FILE=%PAS_ROOT%\ftpcmd.txt
    set PAS_DATA_DIR=%PAS_ROOT%\%PAS_DATE%
    if not exist %PAS_DATA_DIR% mkdir %PAS_DATA_DIR%
    
    
    echo 文件夹地址%PAS_DATA_DIR%
    
    
    rem 从FTP获取数据
    
    
    echo open %FTP_SERVER%>%FTP_CMD_FILE%
    echo %FTP_USER%>>%FTP_CMD_FILE%
    echo %FTP_PASSWORD%>>%FTP_CMD_FILE%
    echo ascii>>%FTP_CMD_FILE%
    echo literal pasv>>%FTP_CMD_FILE%
    echo prompt >>%FTP_CMD_FILE%
    echo cd %PAS_DATE%>>%FTP_CMD_FILE%
    echo lcd %PAS_DATE%>>%FTP_CMD_FILE%
    echo mget *.*>>%FTP_CMD_FILE%
    echo close>>%FTP_CMD_FILE%
    echo bye>>%FTP_CMD_FILE%
    ftp -s:%FTP_CMD_FILE%
    
    
    c:
    echo 解压开始 >>%PAS_DATA_DIR%\GetOK.dat
    C:\"Program Files"\WinRAR\winrar.exe e  %PAS_DATA_DIR%\*.zip %PAS_DATA_DIR%
    echo 解压完成 >>%PAS_DATA_DIR%\GetOK.dat
    
    
    set EndTime=%Time:~0,2%:%Time:~3,2%:%Time:~6,2%
    echo FTP下载数据开始时间:%StartTime%,结束时间:%EndTime%
    echo FTP下载数据开始时间:%StartTime%,结束时间:%EndTime% >>%PAS_DATA_DIR%\GetOK.dat
    
    
    D:
    cd %PAS_DATA_DIR%
    if exist *.ok (
     echo %PAS_DATE%>>%PAS_DATA_DIR%\JKSJOK.dat
    )
    echo 存在>>%PAS_DATA_DIR%\GetOK.dat
    set /a "PAS_DATE+=1"
    echo now date:%PAS_DATE%
    echo now enddate:%enddate%
    rem pause
    if "%enddate%" neq "%PAS_DATE%" goto start
    exit

    四、linux ftp获取文本类文件的shell脚本

    #!/bin/sh
    ########################################################################
    #
    # 此即可手工执行脚本,需要传入执行日期,也可自动执行
    # 当然直接使用scp命令来取更简洁
    ########################################################################
    # 机构号(需要写死原先日期可写死TIMETMP即可,如你需要20150202当天的数据,重跑需删除jksj文件夹下当天的文件)
    set -e
    ORGCODE=883000
    # 自动输入前一天的日期
    TIMETMP=$(date -d"yesterday" +%Y%m%d)
    #read var
    #TIMETMP=$var
    #重跑需删除当天文件数据
    cd /home/pasdb/doload/pasdata/jksj/
    rm -rf $TIMETMP
    #系统当前日期
    SYSTIME=$(date '+%Y-%m-%d %H:%M:%S')
    NOWDATE=${SYSTIME:0:10}
    NOWTIME=${SYSTIME:11:8}
    #三十天以前的日期
    tendays=$(date -d"30 days ago" +%Y%m%d)
    # 如果格式为:2010-07-07
    if test "${#TIMETMP}" = 10
    then
        YYY=${TIMETMP:0:4}
        MMM=${TIMETMP:5:2}
        DDD=${TIMETMP:8:9}
        INDATE=$YYY$MMM$DDD
    # 如果输入日期格式为:20100707
    else
        INDATE=$TIMETMP
    fi
    
    # 修改日期格式为:2010-07-07
    YYY=${INDATE:0:4}
    MMM=${INDATE:4:2}
    DDD=${INDATE:6:7}
    PROCDATE=$YYY"-"$MMM"-"$DDD
    YEARBEGIN=$YYY"-01-01"
    # 前一天日期格式为:2010-05-20
    #DAYAGO=$(date -d "$PROCDATE -1 days" +%Y-%m-%d)
    #AGODATE=$(date -d "$PROCDATE -1 days" +%Y%m%d)
    
    #nMonBegDate=$(date -d "$PROCDATE" +%Y%m)"01"
    #nMEndLaDate=$(date -d "$nMonBegDate -1 days +1 months" +%Y%m%d)
    
    logYear=$YYY
    logMonth=$MMM
    
    if [ "$PROCDATE" \< "$NOWDATE" ]
    then
    #脚本存放目录
        DATAPATH=/home/pasdb/doload
        #LOADPATH=/home/pasdb/doload/pas_load_CORE.sql
        PROCPATH=/home/pasdb/doload/pas_pro_file.sh
        
    
    #FTP信息:IP地址:FTPIP;用户名:FTPNAME;密码:FTPPWD;FTP目录:FTPDATAPATH;FTP保存文件名:FTPFILE
        FTPIP="11.11.0.2"
        FTPNAME="sjff"
        FTPPWD="sjff"
        FTPDATAPATH="/home/sjff/CORE/ADD/"$INDATE
        FTPFILE_CORE="CORE_"$ORGCODE"_"$INDATE"_ADD.tar.Z"
        
    #初始化标记值为0
        LOADFLAG=0
    
    # 创建工作目录
        createWorkSpace()
        {
          if [ ! -e $DATAPATH"/pasdata" ]
            then
                mkdir pasdata
                cd pasdata
                # dbresult 存放执行结果
                mkdir dbresult
                # zipdata 存放ftp下载的zip数据文件
                mkdir zipdata
                mkdir zipdata/sjff
                mkdir zipdata/sjff"/"$INDATE
                # unzipdata 存放执行当天M包解压临时存放目录
                mkdir unzipdata
                # log 存放日志文件
                mkdir log
                #CORE 存放CORE日志文件
                mkdir CORE
    mkdir jksj
    mkdir jksj"/"$INDATE            
    #mkdir log"/CORE/"$logYear
            #mkdir log"/CORE/"$logYear"/"$logMonth
            else
                cd $DATAPATH"/pasdata"
    
                if [ ! -e dbresult ]
                then
                    mkdir dbresult
                fi
    
                if [ ! -e zipdata ]
                then
                    mkdir zipdata
                fi
                if [ ! -e zipdata/sjff ]
                then
                    mkdir zipdata/sjff
                fi
                if [ ! -e zipdata/sjff/$INDATE ]
                then
                    mkdir zipdata/sjff/$INDATE
                fi
                if [ ! -e unzipdata ]
                then
                    mkdir unzipdata
                fi
                if [ ! -e log ]
                then
                    mkdir log
                fi
    if [ ! -e jksj/$INDATE ]
    then
    mkdir jksj/$INDATE
    fi
           fi
            DATAPATH=$DATAPATH"/pasdata"
        }
    
    #创建程序实现功能所需的目录空间
        createWorkSpace $DATAPATH
        LOGFILE=$DATAPATH"/log/CORE_"$INDATE".log"
        DBRESULT=$DATAPATH"/dbresult"
        DAILY_BATCH_LAST_DATE_CORE=$DBRESULT"/daily_batch_last_date_core"
        DAILY_BATCH_BEGIN_STATE_CORE=$DBRESULT"/daily_batch_begin_state_core"
        SQL_RESULT_CORE_LOAD=$DBRESULT"/sql_result_core_load"
    
        if [ ! -e $DAILY_BATCH_LAST_DATE_CORE ]
        then
            touch $DAILY_BATCH_LAST_DATE_CORE
        fi
        if [ ! -e $DAILY_BATCH_BEGIN_STATE_CORE ]
        then
            touch $DAILY_BATCH_BEGIN_STATE_CORE
        fi
        if [ ! -e $SQL_RESULT_CORE_LOAD ]
        then
            touch $SQL_RESULT_CORE_LOAD
        fi
    
    #写日志
        WriteLog()
        {
            if [ ! -e $LOGFILE ]
            then
                touch $LOGFILE
            fi
            if [ "$1" != "" ]
            then
                echo $(date '+%Y-%m-%d %H:%M:%S')"=======>"$1 | tee -a $LOGFILE
            fi
        }
    
    # ftp download data
    /usr/bin/ftp -n<<!
    open $FTPIP
    user $FTPNAME $FTPPWD
    binary
    prompt off
    cd $FTPDATAPATH
    lcd $DATAPATH"/zipdata/sjff/"$INDATE
    mget "$FTPFILE_CORE"
    close
    bye
    !
    cd $DATAPATH"/zipdata/sjff/"$INDATE
    WriteLog "download ftp file is end."
    if [ -f "$FTPFILE_TPDM" ]
    then
    #FILESIZE=$(ls -l $FTPFILE_CORE|awk '{printf $5}')
    #FILESIZE=$(awk BEGIN'{printf "%.3f", '$FILESIZE'/(1024*1024)}')
    #cd $DATAPATH"/pasdata/zipdata/sjff/"$INDATE
    #chmod 777 "$INDATE"
    tar -zxvf $FTPFILE_CORE -C /home/pasdb/doload/pasdata/unzipdata
    WriteLog "download ftp file is success and tar file to unzipdata success"
    mv "/home/pasdb/doload/pasdata/unzipdata/CORE_BDFMHQAA_"$INDATE"_ADD_883.del" /home/pasdb/doload/pasdata/jksj"/"$INDATE/BDFMHQAA.DEL
    WriteLog "copy required file to jksj success"
    #验证文件是否齐全
    cd /home/pasdb/doload/pasdata/jksj"/"$INDATE
    if [ 1 != $(ls -A | wc -l) ]
    then
    WriteLog "today jksj file incomplete data"
    cd /home/pasdb/doload/pasdata/jksj
    rm -rf $INDATE
    else
    touch ok.dat
    WriteLog "today jksj file complete data and create ok.dat file"
    fi
    cd /home/pasdb/doload/pasdata/unzipdata
    rm -f *.del
    WriteLog "delete unzipdata file successfully"
    cd /home/pasdb/doload/pasdata/log
    rm -f "CORE_"$tendays".log"
    WriteLog "remove ten days before log file successfully"
    cd /home/pasdb/doload/pasdata/zipdata/sjff
    rm -rf $tendays
    WriteLog "remove ten days before sjff file successfully"
    LOADFLAG=1
    else
    WriteLog "download ftp file is fail,please check the ftp file is exist?"
    LOADFLAG=0
    fi                
    fi


    展开全文
  • 很久以前知道linux下搭建ftp服务器的软件是wuftp,现在真的时代变了,上网看一下几乎全世界的人都用proftpd了!赶个潮流,我也用proftpd在公司的一台备用小服务器上装ftp服务器
  • ftp服务器配置

    千次阅读 2009-05-07 15:14:00
    http://blog.chinaunix.net/u/21948/showart_504050.html 据我了解,FTP服务器vsftpd,proftpd,...从网上搜索资料,发现该ftp服务器的移植难度也不大,主要是配置问题。所以就选择了移植vsftpd。有两篇文章写的不错

    http://blog.chinaunix.net/u/21948/showart_504050.html

     

      据我了解,FTP服务器vsftpd,proftpd,pureftpd等。考虑到我的CentOS4.5上装的是vsftpd,而且vsftpd很小,但功能还是比较强大。从网上搜索资料,发现该ftp服务器的移植难度也不大,主要是配置问题。所以就选择了移植vsftpd。有两篇文章写的不错:

     
     
        我在移植时,并没有完全采用这个思路。主要的想法是尽量利用Host上的配置,先得到相应的依赖关系,然后再深入。
     
    (1)下载vsftpd
     
        官方网站:http://vsftpd.beasts.org/ 
        当前的最新版本是:vsftpd-2.0.6,压缩包只有155k。
     
    (2)交叉编译
     
        需要修改的地方有两处。第一处是Makefile的CC:
     

    # Makefile for systems with GNU tools
    CC = /usr/local/arm/3.4.1/bin/arm-linux-gcc

     
        就是修改为你自己的交叉编译器的地址。我因为前面编译一些工具都是使用了3.4.1,所以这里也就继续使用了。
     
        第二处是脚本vsf_findlibs.sh。这里主要是牵扯到库libcap的问题。网上的修改都是更改到交叉编译器的lib文件夹下,发现即使在lib文件夹下面没有,也不影响。那么,我判断,这个库是没有必要的,直接把这两行注释就可以了。
     

    # Look for libcap (capabilities)
    # locate_library /lib/libcap.so.1 && echo "/lib/libcap.so.1";
    # locate_library /usr/lib/libcap.so && echo "-lcap";

     
       改完后,执行make,动态编译就成功了。如下:
     

    [root@lqm vsftpd-2.0.6]# file vsftpd
    vsftpd: ELF 32-bit LSB executable, ARM, version 1 (ARM), for GNU/Linux 2.4.3, dynamically linked (uses shared libs), stripped
    [root@lqm vsftpd-2.0.6]# ls -l vsftpd
    -rwxr-xr-x 1 root root 81728 Mar 22 16:46 vsftpd

     
    (3)查看依赖及其相应的配置文件
     
        首先,因为是动态链接,查看相应的动态库。
     

    [root@lqm vsftpd-2.0.6]# /usr/local/arm/3.4.1/bin/arm-linux-readelf -d vsftpd

    Dynamic segment at offset 0x134a4 contains 25 entries:
      Tag Type Name/Value
     0x00000001 (NEEDED) Shared library: [libcrypt.so.1]
     0x00000001 (NEEDED) Shared library: [libdl.so.2]
     0x00000001 (NEEDED) Shared library: [libnsl.so.1]
     0x00000001 (NEEDED) Shared library: [libresolv.so.2]
     0x00000001 (NEEDED) Shared library: [libutil.so.1]
     0x00000001 (NEEDED) Shared library: [libc.so.6]

     
        把这些库从/usr/local/arm/3.4.1/arm-linux/lib下拷贝到rootfs的lib下。
     
        第一步工作完成了。
     
        第二步工作,把vsftpd拷贝到rootfs的/usr/sbin或者是/usr/local/sbin下面。我的是拷贝到了/usr/sbin下面。
     
        第三步工作就是配置文件vsftpd.conf。我是直接从CentOS4.5的/etc/vsftpd/vsftpd.conf拷贝到了rootfs的/etc/vsftpd.conf。这里测试时有一个问题,如果在rootfs下跟host一样,建立一个vsftpd的话,那么直接启动vsftpd都会产生一个oops错误,就是说只能由inetd或者xinetd来启动。而事实上,我已经设置为listen=YES,应该可以standalone启动。根据情况,屏蔽了几条记录:
     

    #pam_service_name=vsftpd
    #userlist_enable=YES
    #enable for standalone mode
    listen=YES
    tcp_wrappers=NO

     
        就是只更改了最后四行。关于具体的配置后面再做探讨。先走通再说。
     
        第四步工作就是牵扯到用户问题了。首先有一个本地用户,这样可以通过本地用户进行访问;其次要匿名用户,这就需要ftp用户;还需要有一个nobody用户。直接创建比较麻烦,所以直接拷贝host的/etc/passwd,/etc/group,/etc/shadow。
     

    [root@listentec ~]#cat /etc/group
    root::0:root
    ftp:x:50:
    nobody:x:99:
    users:x:100:
    500:x:500:boa
    501:x:501:armlinux

     
        这样用户问题就解决了。
     
        第五步工作就是相应的目录需要创建。支持匿名用户需要创建/var/ftp,根据一般惯例,我在ftp下建立了pub目录。还需要建立/usr/share/empty目录,否则在访问时会出现:
     

    500 OOPS: vsftpd: not found: directory given in 'secure_chroot_dir':/usr/share/empty

     
       这个是与你的配置选项相关的。
     

    /usr/sbin/vsftpd ---- VSFTPD的主程序(必需)
    /etc/rc.d/init.d/vsftpd ---- 启动脚本
    /etc/vsftpd.conf ---- 主配置文件(必需)
    /etc/pam.d/vsftpd ---- PAM认证文件
    /etc/vsftpd.ftpusers ---- 禁止使用VSFTPD的用户列表文件
    /etc/vsftpd.user_list ---- 禁止或允许使用VSFTPD的用户列表文件
    /etc/userconf ------ 指定用户个人配置文件所在的目录
    /var/ftp ---- 匿名用户主目录
    /var/ftp/pub---- 匿名用户的下载目录
    /var/log/vsftpd.log ------- 日志文件
    除vsftpd、vsftpd.conf两个文件外,其他文件的需要具体看主配置文件的配置

     
       我就建立了这两个目录。其余参考绿色部分,前面已经建立好了。然后制作映象,烧写到目标板上,通过standalone模式启动。
     

    [root@listentec /usr]#vsftpd &
    [root@listentec /usr]#pgrep vsftpd
    775

     
       在host上测试:
     

    [root@lqm ~]# ftp 192.168.1.100
    Connected to 192.168.1.100.
    220 (vsFTPd 2.0.6)
    530 Please login with USER and PASS.
    530 Please login with USER and PASS.
    KERBEROS_V4 rejected as an authentication type
    Name (192.168.1.100:armlinux): anonymous
    331 Please specify the password.
    Password:
    230 Login successful.
    Remote system type is UNIX.
    Using binary mode to transfer files.
    ftp> ls
    227 Entering Passive Mode (192,168,1,100,201,91)
    150 Here comes the directory listing.
    drwxr-xr-x 2 0 0 0 Mar 22 08:24 pub
    226 Directory send OK.
    ftp>

     

    [root@lqm ~]# ftp 192.168.1.100
    Connected to 192.168.1.100.
    220 (vsFTPd 2.0.6)
    530 Please login with USER and PASS.
    530 Please login with USER and PASS.
    KERBEROS_V4 rejected as an authentication type
    Name (192.168.1.100:armlinux): armlinux
    331 Please specify the password.
    Password:
    230 Login successful.
    Remote system type is UNIX.
    Using binary mode to transfer files.
    ftp> cd /var
    250 Directory successfully changed.
    ftp> ls
    227 Entering Passive Mode (192,168,1,100,50,108)
    150 Here comes the directory listing.
    drwxr-xr-x 3 0 0 0 Mar 22 08:24 ftp
    drwxr-xr-x 2 0 0 0 Mar 19 07:57 lock
    drwxr-xr-x 3 0 0 0 Mar 22 08:35 log
    drwxr-xr-x 2 0 0 0 Mar 19 07:57 run
    drwxr-xr-x 2 0 0 0 Mar 20 00:03 spool
    drwxr-xr-t 2 0 0 0 Mar 19 07:57 tmp
    drwxrwxrwx 4 0 0 0 Mar 19 09:23 www
    226 Directory send OK.
    ftp>

     
       可见成功了。当然,这只是初步工作。对配置部分还很陌生,安全设置也没有。而这些工作才是最为复杂的,要想在开发板上把ftp server弄安全稳定也不容易。不过得慢慢来。
     


     
    附:开发板rootfs当前已经具备的功能示例
     
    1、ping功能
     

    [root@listentec ~]#ping sdu.edu.cn
    PING sdu.edu.cn (202.194.15.6): 56 data bytes
    64 bytes from 202.194.15.6: seq=0 ttl=58 time=25.015 ms
    64 bytes from 202.194.15.6: seq=1 ttl=58 time=24.863 ms
    64 bytes from 202.194.15.6: seq=2 ttl=58 time=27.460 ms

    --- sdu.edu.cn ping statistics ---
    3 packets transmitted, 3 packets received, 0% packet loss
    round-trip min/avg/max = 24.863/25.779/27.460 ms

     
        ping域名、内网外网ip,都没有问题。
     
    2、nfs client
     

    NFS client is on now and the mounted point is /mnt/nfs

     
        看看启动信息就可以了。
     
    3、telnet client and server
     

    [root@listentec ~]#telnet 192.168.1.100
    Entering character mode
    Escape character is '^]'.

    listentec login: root
    login[792]: root login on `pts/0

     
    4、时间校正
     

    22 Mar 16:34:12 ntpdate[722]: step time server 210.72.145.44 offset 1206174847.300081 sec

     
    5、df -h
     

    [root@listentec ~]#df -h
    Filesystem Size Used Available Use% Mounted on
    rootfs 3.0M 2.1M 884.0k 71% /
    /dev/root 3.0M 2.1M 884.0k 71% /
    mdev 14.7M 0 14.7M 0% /dev
    192.168.1.106:/home/armlinux/nfs
                             11.2G 5.1G 5.5G 48% /mnt/nfs

     
    6、busybox ftpget ftpput
     
       这个没有什么问题,只不过我觉得不太方便。还是要移植一个比较好用的ftp client。待完成。
     
    7、boa server
     
       这个是按照Tekkaman Nin的笔记来的。测试没有问题,比较稳定。后续功能可以逐步开发。
     
    8、tinylogin
     
       也算是一个功能吧。不过现在还有个bug,就是在输入用户名的时候,退格键不起作用,需要解决。
     
    9、ftp server
     
       现在移植好了vsftpd。估计抽时间研究一下配置问题。
     
       后续工作还有很多。希望把大部分可能用到的功能都做一下,选出最优方案定型。这样从bootloader,到kernel,到fs,就都做稳定了。需要什么功能,只需要根据情况再次裁减rootfs和kernel就可以了。也算是自己的工作完成了吧,争取4月底完成所有的工作和整理文档。
    展开全文
  • 局域网搭建FTP服务器

    千次阅读 2010-05-15 16:00:00
    实验室有若干台Fedora和WindowsXP主机。我在每台机子上都要经常更新要跑的程序,程序跑...所以,搭一个FTP服务器是最方便的了。我的笔记本上装了WindowsXP和Fedora双系统。在XP下面,我安装了home FTP Server,使用网页
  • 最近公司在弄自动备份功能,需要实现一个在windowns服务器下,实现一台服务器上的文件自动压缩后备份到另一台服务器上,...由于windows自带ftp客户端,因此就不用装客户端了,直接在服务器上装服务器就可以了。 第一步
  • RHEL下配置ftp服务器

    千次阅读 2013-10-14 11:42:08
    最近在虚拟机上装了RedHat企业版,打算弄个ftp从本地传送文件,我使用的是RHEL自带的gssftp来配置。总结一下步骤:  1. 系统->管理->网络的“设备”标签卡中点击“新建”,选择“以太网连接”,点击“前进”; ...
  • 有时候呢我们有一台本地的台式机或者云服务器,我们想要搭个ftp服务器好让我们在内网/外网中方便的传输、保存文件,这样别的任何电脑啊,设备啊,只要访问这个ftp的地址,就可以进行文件传输啦!由于我现在台式机子...
  • 问题一:需要在哪台服务器上装个serv-u ftp工具, 问题二:怎么在juniper中设置, 目前的网络结构 ------------------------------------------------------------ 1、交换机划分vlan2 (PC) 和 本有 vlan 1 ...
  • 据我了解,FTP服务器vsftpd,proftpd,pureftpd等。考虑到我的CentOS4.5上装的是vsftpd,而且vsftpd很小,但功能还是比较强大。从网上搜索资料,发现该ftp服务器的移植难度也不大,主要是配置问题。所以就选择了移植...
  • 客户端:ftp(vsftpd 包含了 ftp 但是一般情况下在服务器上装ftp也没啥用) 命令 ftp 192.168.10.100 共享文件目录 /var/ftp/pub 配置文件 /etc/vsftpd/vsftp.conf local_enable=YES write_enable=YES ...
  • ftp 上传不上去数据

    2012-07-02 16:51:43
    公司租用的服务器上装FTP server,因业务需求需要定时向服务器上传文件,ftp的通讯端口为21,服务器上有防火墙;使用第三方定时ftp客户端上传工具(hydro集抄器)定时上传数据,配置好之后怎么也上传不上去文件。...
  • 今天新到一台服务器,需要做一些环境配置拷入一些备份数据,在这台服务器上装FlashFxp又觉得麻烦,所以干脆用命令行吧
  • 以前在服务器上装了一个ftp,但是一直没用(那时刚接触centos,也不知道ftp是干啥的)。最近要使用,发现无法建立连接,登录就报530 Login incorrect。按网上的教程注释了/etc/pam.d/vsftpd里的auth required pam_shells...
  • 用Nginx和FTP协议上传图片(文件)时,要在同一台服务器上装Nginx和vsftpd,他俩操作的目录必须设置为同一个,分别在nginx.conf和vsftpd.conf里设置操作目录,然后用ftp协议上传,用nginx访问。
  • Linux 服务器配置

    2015-04-04 15:39:00
    1.安装ssh-server sudo apt-get install openssh-server 2.windows上装一个putty ...3.安装ftp服务器 ➜ ~ sudo apt-get install pure-ftpd 4.安装jdk 官网下载jdk,上传到ftp服务器上 创建ja...
  • 在写云缴费项目的过程中,需要用Ftp传对账文件,由于对账文件在AP上,所以在WEB上装了Nginx,打算利用NginX转发ftp请求,但是奇怪的是,怎么都调不通,这个有空抽一篇幅详细讲解。由于项目着急上线,所以采取了shell...
  • Linux 搭建 vsftpd ftpd 服务器

    千次阅读 2016-10-11 22:57:23
    怎么解决这个问题呢?vsftpd 的ftp服务,是现在比较好的一种,下面来看看怎么构建他。...看看服务器上装过vsftpd没有 rpm -qa | grep vsftpd如果出现vsftpd-xx-xx-xx.el5,说明已经安装 vsftp 服务器安装vsftpyu
  • 好长时间没写博客了,刚学完Linux,今天就把我们的考试题写写。 要求: 1、在Linux下装samba 服务并在Windows下新建以... 2、在Linux上装FTP 服务,再用linux这个用户把/tmp下的linux.html文件上传到ftp server上再...
  • 假如集群上已经装了python,现在需要在集群上离线装numpy,那么需要在各个节点上都安装numpy库...在服务器上新建一个文件夹,通过ftp把相关包上传到文件夹; cd到文件夹所在所在路径,解压 pip-9.0.1.tar.gz; tar ...
  • 据我了解,FTP服务器vsftpd,proftpd,pureftpd等。考虑到我的CentOS4.5上装的是vsftpd,而且vsftpd很小,但功能还是比较强大。从网上搜索资料,发现该ftp服务器的移植难度也不大,主要是配置问题。所以就选择了移植...
  • golang文件上传服务器

    2020-09-08 13:31:08
    现在nginx大行其道,一般在机器上装个nginx 简答配置下就可以做upload用了。主要需求是开发那边需要运维这边投递一些app_log和一些history log。下面讲解下直接用curl命令上传。 第一种: server端有现成的ftpserver...
  • 服务器上装的东西越少越好,远程控制只用自带的3389就绝对安全,不要相信和使用网上流行的那些远程控制软件! 不要安装SERV-U,真想装的照着这个教程做,不会的可以向我请教!————————————为SERV-...
  • 这几天对服务器兴趣贼为浓厚,在虚拟机上装了一个CentOS7玩了玩,遇到过很多问题,比如网卡驱动设置,不能ping 等等问题,然后掏钱买个ECS搭服务器玩玩,下面就开始谢谢我的心路历程吧。 首先 买服务器,什么阿里云...
  • 一个现象就是,用Wireshark抓包,在A、B两台电脑上装FTP server,如果在A访问本机的FTP服务器则wireshark并不会显示相应的数据包,而A访问B的FTP服务器wireshark就会出现IP数据包。那么对于访问本机的IP数据包在系统...

空空如也

空空如也

1 2 3 4 5
收藏数 81
精华内容 32
热门标签
关键字:

服务器上装ftp