交互式单机、批量ftp的shell

可以向单个或多个主机传送文件的shell,首先修改两个参数ftp_user   ftp_passwd
就是接受文件主机的用户名和密码。如果是批量发送则接受文件主机的密码必须相同。还要建立一个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


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SQLAlchemy 是一个 SQL 工具包和对象关系映射(ORM)库,用于 Python 编程语言。它提供了一个高级的 SQL 工具和对象关系映射工具,允许开发者以 Python 类和对象的形式操作数据库,而无需编写大量的 SQL 语句。SQLAlchemy 建立在 DBAPI 之上,支持多种数据库后端,如 SQLite, MySQL, PostgreSQL 等。 SQLAlchemy 的核心功能: 对象关系映射(ORM): SQLAlchemy 允许开发者使用 Python 类来表示数据库表,使用类的实例表示表中的行。 开发者可以定义类之间的关系(如一对多、多对多),SQLAlchemy 会自动处理这些关系在数据库中的映射。 通过 ORM,开发者可以像操作 Python 对象一样操作数据库,这大大简化了数据库操作的复杂性。 表达式语言: SQLAlchemy 提供了一个丰富的 SQL 表达式语言,允许开发者以 Python 表达式的方式编写复杂的 SQL 查询。 表达式语言提供了对 SQL 语句的灵活控制,同时保持了代码的可读性和可维护性。 数据库引擎和连接池: SQLAlchemy 支持多种数据库后端,并且为每种后端提供了对应的数据库引擎。 它还提供了连接池管理功能,以优化数据库连接的创建、使用和释放。 会话管理: SQLAlchemy 使用会话(Session)来管理对象的持久化状态。 会话提供了一个工作单元(unit of work)和身份映射(identity map)的概念,使得对象的状态管理和查询更加高效。 事件系统: SQLAlchemy 提供了一个事件系统,允许开发者在 ORM 的各个生命周期阶段插入自定义的钩子函数。 这使得开发者可以在对象加载、修改、删除等操作时执行额外的逻辑。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值