############################################
# 自動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