可以向单个或多个主机传送文件的shell,首先修改两个参数ftp_user ftp_passwd
就是接受文件主机的用户名和密码。如果是批量发送则接受文件主机的密码必须相同。还要建立一个IP_file文件以一定的格式保存IP地址表。特别对经常向多个主机传送文件的用户非常方便,设置好参数,执行该shell就可以睡大觉了!
就是接受文件主机的用户名和密码。如果是批量发送则接受文件主机的密码必须相同。还要建立一个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