############################################
# 自动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 "按回车键退回主画面......"
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 "按回车键退回主画面......"
read FAIL_FLAG
else
if grep "Destination Host Unreachable" $SUCCESS >/dev/null
then
echo -e "fail to ping $MACHINE 网络不通..."
echo -e "按回车键退回主画面......"
read FAIL_FLAG
else
ftp_out
echo -e "ftp file completed ......"
echo -e "按回车键退回主画面......"
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