lftpコマンドによるFTPSサーバへのアクセス

lftpコマンドによるFTPSサーバへのアクセス Linuxのlftpコマンドでアクセスするだけ。
引数なしてlftpを実行するとシェルっぽい対話形式での接続が可能になります。
-c の引数で直接lftpコマンドを渡すことができ、
-f でlftpコマンドを列挙したファイルを指定して実行できます。
ファイル指定の場合、-f script-file arg1 arg2...のように引数を続けるとファイル内で@1,@2等で展開して使うことができます。

lftp.sh
01:
02:
03:
04:
05:
06:
07:
08:
09:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
#!/bin/bash

USER=lftp_user
PASSWD=lftp_passwd
FTPS_HOST=ftps01.com
FTPS_PORT=990
SRC_DIR=$HOME
DST_DIR=/tmp
FILE=$1

function cmd_lftp () {
    CMD="$1"
    debuglog "lftp cmd=[$CMD]"
    lftp -c "open -u ${USER},${PASSWD} -p ${FTPS_PORT} ${FTPS_HOST}; $CMD"
}


RC=`cmd_lftp "ls ${DST_DIR}/${FILE}"`
LFTP_RC=$?
if [ $LFTP_RC -ne 0 ]; then
    echo "lftp cmd error. rc=$LFTP_RC"
    exit 1
fi

if [ "$RC" = "" ]; then
    CNT=0
else
    CNT=`echo $RC | wc -l`
fi

if [ $CNT -gt 0 ]; then
    echo "${DST_DIR}/${FILE} exist."
    exit 0
fi

# send file
RC=`cmd_lftp "debug 3; mput -O ${DST_DIR}/ ${SRC_DIR}/${FILE}"`
LFTP_RC=$?
if [ $LFTP_RC -ne 0 ]; then
    echo "lftp cmd error. rc=$LFTP_RC"
    exit 1
fi
やってることはいたって単純で、lftp.sh <送信対象ファイル> として実行すると存在しない場合のみ送信する、ということをやっています。

lftpでコマンドを渡すときは、通常のシェルのようにセミコロン(;)で区切ります。
37行目のdebug 3は、接続時の情報や転送状況などデバッグするのに役立ちます。

ちなみに、ポートの21と990の使い分けは特に決めがあるわけではなく、通常のFTPとFTPSと共存させたい時FTPを21でFTPSを990としているようです。また、FTPSをFTPとしても使いたい時はFTPSを21で立てるようです。


関連記事

Comment

(編集・削除用)
管理者にだけ表示を許可

Trackback

URL
https://nosource.blog.fc2.com/tb.php/156-57bfa2b6
この記事にトラックバック(FC2Blog User)

カテゴリ

Amazon

アクセスランキング

[ジャンルランキング]
コンピュータ
249位
アクセスランキングを見る>>

[サブジャンルランキング]
プログラミング
38位
アクセスランキングを見る>>

RSSリンクの表示

ブロとも申請フォーム

Copyright © nopgm