就是接受文件主機的用戶名和密碼。如果是批量發送則接受文件主機的密碼必須相同。還要建立一個IP_file文件以一定的格式保存IP地址表。特別對經常向多個主機傳送文件的用戶非常方便,設置好參數,執行該shell就可以睡大覺了!
shell魅力無窮,歡迎交流並提出寶貴意見!!
#!/bin/ksh
#功能: 實現向轄區內單個網點或者所有網點傳送文件,以#顯示傳送情況.
#特殊要求:如果向全轄所有網點傳送文件需要一個IP地址表文件:IP_file和本shell文件
# 放在同一目錄下,格式:IP地址 | 機構碼 | 機構名稱
# 第一行爲地址目錄,第二行爲服務器地址,從第三行開始是接受文件的主機
#作者:河南農信 “飛越無限” tel:03753391193 qq:58016532
#版本:2006/01/20 (Today is my boy's birthday,I love him!!)
my_ftp() #ftp函數
{
ftp -i -n "$ftp_address" << FTPIT
user "$ftp_user" "$ftp_passwd"
cd /tmp
bin
hash
put "$put_file" /tmp/"$get_file"
chmod 755 /tmp/"$get_file"
by
FTPIT
echo "[42mOK.......\07[40m"
}
ftp_menu()
{
clear
setcolor hi_white
echo "\n\n"
echo "\t\t┏━━━━━━━━━━━━━━━━┓"
echo "\t\t┃ ┃"
echo "\t\t┃ 1 向單個主機傳送文件 ┃"
echo "\t\t┃ 2 向所有主機傳送文件 ┃"
echo "\t\t┃ 0 退出 ┃"
echo "\t\t┃ ┃"
echo "\t\t┗━━━━━━━━━━━━━━━━┛"
echo "\t\t\t請選擇:\c"
setcolor white
}
#主程序
ftp_user=root #ftp的登陸用戶
ftp_passwd=******* #ftp的登陸用戶密碼
while true
do
ftp_menu
read choise0
[ "$choise0" -eq 0 ] && break
[ "$choise0" -ge 1 -a "$choise0" -le 2 ] || continue
echo "請輸入要發送的文件名(帶絕對路徑):\c"
while read put_file
do
if [ -f "$put_file" ]
then
break
else
echo "^[[33m輸入文件不存在,請重新輸入:^[[37m\c"
fi
done
get_file=`basename "$put_file"`
case $choise0 in #向單個主機發送文件
1)
echo "請輸入接受文件的主機IP地址:\c"
while read ftp_address
do
[ $ftp_address = "0" ] && break
[ $ftp_address = "n" ] && break
num=`ping -c 1 $ftp_address | awk '$2 == "packets" {print substr($7,1,1)}'`
if [ $num = 0 ]
then
my_ftp
else
echo "^[[41m地址是"$ftp_address"的網點網絡不通!!!^[[40m"
fi
echo "\n^[[33m請輸入接受數據主機的IP地址,退出請輸入[0/n]:^[[37m\c"
done
;;
2) #向全轄主機發送文件
if [ -f /tmp/auto_ftp.log ]
then
rm /tmp/auto_ftp.log
fi
IP_address=`tail +3 IP_file | awk -F\| '{print $1}'`
echo "\n^[[44m開始向轄內所有網點發送文件,請按 y 確認:^[[40m\c"
read choise2
if [ $choise2 = y ]
then
for ftp_address in $IP_address
do
num=`ping -c 1 $ftp_address | awk '$2 == "packets" {print substr($7,1,1)}'`
if [ $num = 0 ]
then
echo "^[[32m向主機地址是"$ftp_address"發送文件......^[[37m"
echo "向主機地址是"$ftp_address"發送文件" >>/tmp/auto_ftp.log
my_ftp
else
echo "^[[41m主機IP是"$ftp_address"的網點網絡不通!!^[[40m"
echo "主機IP是"$ftp_address"的網點網絡不通!!" >>/tmp/auto_ftp.log
fi
done
echo "\n^[[45m請按任意鍵返回菜單!^[[40m"
else
echo "\n^[[2;14;4m輸入錯誤發送失敗!!^[[2;7;0m"
fi
read wait
;;
esac
done