天天看點

利用Shell 寫的自動FTP程式

############################################

#  自動FTP

#  菜單顯示FTP目标主機資訊無修改則自動将

#  資料做FTP,修改後将根據修改資訊做FTP

#  write by cailei

############################################

USER=`whoami`

HOST=`hostname`

DATE=`date +%d/%m/%Y`

############################################

#本地存放檔案目錄

MY_PATH=/tmp

#目标主機資訊

D_HOST=172.31.69.196

FTP_USER=bpbp

FTP_PASS=bpbpasd

FTP_PATH=/tmp

#檢測網絡檔案

SUCCESS=/tmp/success.ping

FAIL=/tmp/fail.ping

############### 修改設定 ###################

change_setting()

{

  echo -e "please change home host file path..."

  read MY_PATH

  echo -e "please change destination host ip address..."

  read D_HOST

  echo -e  "please change destination host ftp user..."

  read FTP_USER

  echo -e  "please change destination host ftp pass..."

  read FTP_PASS

  echo -e  "please change destination host ftp file path..."

  read FTP_PATH

  tput  clear

}

############ FTP OUT 函數 ##################

ftp_out()

{

    echo -e "請輸入要傳輸的檔案名:"

    read  FTP_FILE

    #判斷檔案是否存在

    if ! [ -f "$MY_PATH/$FTP_FILE" ]

    then

         echo  -e "$MY_PATH/$FTP_FILE檔案不存在 please check ..."

         echo  -e "按Enter鍵退回主畫面......"

         read FAIL_FLAG

    fi

    CFG=$MY_PATH/my_ftp.cfg

    cd $MY_PATH

    echo "open $D_HOST" > $CFG

    echo "user $FTP_USER $FTP_PASS" >> $CFG

    echo "bi" >> $CFG

    echo "prompt" >> $CFG

    echo "cd $FTP_PATH" >> $CFG

    echo "mput $FTP_FILE" >> $CFG

    echo "by" >> $CFG

    ftp -in < $CFG >/dev/null

    rm -f $CFG

}

#########  單獨IP檢測函數 ##################

ping_one()

{

   echo -e "網絡檢測中請稍等......"

   MACHINE=$D_HOST

   ping  -c10  $MACHINE  1>$SUCCESS  2>$FAIL

   if  grep  "unknown host"  $FAIL  >/dev/null

   then

        echo  -e "fail to ping $MACHINE unknown host please check ..."

        echo  -e "按Enter鍵退回主畫面......"

        read FAIL_FLAG

   else

       if  grep  "Destination Host Unreachable"  $SUCCESS  >/dev/null

       then

            echo -e "fail to ping $MACHINE 網絡不通..."

            echo -e "按Enter鍵退回主畫面......"

            read FAIL_FLAG

       else

            ftp_out

            echo -e "ftp file completed ......"

            echo -e "按Enter鍵退回主畫面......"

            read OK_FLAG

       fi

   fi

   rm  -f  $SUCCESS

   rm  -f  $FAIL

}

while :

do

tput  clear

cat  <<MYFTP

$HOST                                                             $DATE                    

                           AUTO FTP

                    -----------------------

                     本地目錄:  $MY_PATH

                     目标主機:  $D_HOST

                     使用者名  :  $FTP_USER

                     目标目錄:  $FTP_PATH

MYFTP

echo  -e  "是否修改設定: Y/N"

echo  -e  "退出請輸入:Q/q"

read CHOICE

tput  clear

case  $CHOICE  in

Y|y)  change_setting

      ping_one

;;

N|n)  ping_one

;;

Q|q)  exit 0

esac

done

繼續閱讀