zoukankan      html  css  js  c++  java
  • 非交互式shell脚本案例-实现自主从oracle数据库获取相关数据,并在制定目录生成相应规则的文件脚本

    get_task_id 脚本内容

    #!/usr/bin/expect
    #配置登陆数据库的端口
    set port 22
    #配置登陆数据库的ip地址
    set oracleip 10.0.4.41
    #配置数据库实例名
    set DSN bms
    #配置数据库用户名
    set username sa
    #配置数据库登陆密码                                                                                                                                                            
    set password oracle
    spawn ssh -p $port oracle@$oracleip
    expect {
      "yes/no" {send "yes "}
      "*Password: " {send "oracle "}
     }
    expect "oracle@linux*"
    send "sqlplus $username/$password "
    expect "SQL>"
    send "spool taskid.txt "
    send "select task_id from data_task_records where task_source=2 and download_flag=0 and task_state=0; "
    send "spool off "
    send "quit "
    spawn scp oracle@$oracleip:/home/oracle/taskid.txt .
    expect "Password: "
    send "oracle "
    expect eof

    task_file脚本内容

    #!/bin/bash
    #配置任务需要的号码文件个数(不包括0文件)
    numfile=1
    #配置号码文件的大小
    taskfilesize='158'
    #配置号码文件下载的ftp服务器的ip地址
    ftpip='10.0.4.41'
    #配置号码文件下载的ftp服务器的用户名
    ftpname='msgplus'
    #配置号码文件下载的ftp服务器登陆密码
    ftppswd='cdsf119'
    #配置延迟时间长短(s:秒,m:分钟)
    delay='5m'
    #ftp上传的路径
    upload_file='/home/msgplus/sp/task'
    #本地文件命名
    file_name='11.txt'


    Upload_ftp_task_file()
    {
     ftp -i -n $ftpip <<EOF
     user $ftpname $ftppswd
     cd $upload_file
     put $taskname
     bye
    EOF
    }
    Create_task_file()
    {
     taskid=$(grep "^    [0~9]*" taskid.txt)
     for list in $taskid
     do
      for ((i=$numfile;i>=0;i=i-1))
      do
        case `expr length "$i"` in
        1)
        taskname=$list'_RECEPTOR_000'$i'_'$taskfilesize'.txt';;
        2)
        taskname=$list'_RECEPTOR_00'$i'_'$taskfilesize'.txt';;                                                                                                                     
        esac   
        cp $file_name $taskname
        Upload_ftp_task_file $ftpip $ftpname $upload_file $ftppswd $taskname
        echo `date "+%Y-%m-%d %H:%M:%S"`" 任务$list上传号码文件$taskname成功" >>file.log
        rm $taskname
      done
     done
    }

    main ()
    {
     touch file.log
     while true
     do
      expect -f get_task_id.sh
      Create_task_file $numfile $taskfilesize $file_name
      sleep $delay
     done
    }
    main $delay

  • 相关阅读:
    地区表设计(包括数据插入) Dear
    本博客的内容
    linux msn
    相关的一些技术
    相关的一些产品
    考第一名的学生的发言
    AIX&LINUX操作系统调优
    shell for循环
    自动化测试
    DB2数据库日志
  • 原文地址:https://www.cnblogs.com/wensiyang0916/p/5832388.html
Copyright © 2011-2022 走看看