Commit c6e40d80 authored by QA-甘 盛聪's avatar QA-甘 盛聪

copy

parents
DB tools for quantgroup-QA
\ No newline at end of file
#!/usr/bin/env bash
# -------------------------------------------------------------------------------
# Filename: db_schema_sync.sh
# Revision: 1.0
# Date: 2016/12
# Author: dekun.dai
# Description: 实现数据库表结构同步
# -------------------------------------------------------------------------------
source ~/.bash_profile
if [ $# -ne 7 ]; then
echo "---------------"
echo "source_db_infos:source_db_host: $1, source_db_user: $2"
echo "target_db_infos:target_db_host: $4, target_db_user: $5"
echo "sync_db_name: $7"
echo "---参数不正确---"
echo "Usage:sh db_schema_sync.sh source_db_host source_db_user source_db_pwd target_db_host target_db_user target_db_pwd sync_db_name"
echo "---------------"
exit 1
fi
source_db_host="$1"
source_db_user=$2
source_db_pwd=$3
target_db_host="$4"
target_db_user=$5
target_db_pwd=$6
sync_db_name=$7
date_str=`date "+%Y-%m-%d-%H-%M-%S"`
work_dir=/home/quant_group/test-utils/db-utils
sync_config_folder=~/db_sync_configs
config_file_name="$sync_config_folder/${sync_db_name}_${date_str}_db_schema_sync_config.json"
function db_schema_sync()
{
echo "Step 1: generate_config_file: $config_file_name"
echo "source infos: $source_db_host $source_db_user"
echo "target infos: $target_db_host $target_db_user"
echo "database_name is : $sync_db_name"
sh $work_dir/gen_config.sh $source_db_host $source_db_user $source_db_pwd $target_db_host $target_db_user $target_db_pwd $sync_db_name $config_file_name
echo "Step 2: sync schema: $database $mysql_host"
sync_cmd="mysql-schema-sync -conf ${config_file_name} -sync"
echo "${sync_cmd}"
$sync_cmd
}
database_list='xyqb xyqb_app payment_center risk_control dujiangyan mall qinqiong quartz contract financial_system gyxd offline sms-center spider_center'
if [[ "${database_name}" = "all" ]]
then
echo "all database"
for database in $database_list
do
db_schema_sync $database
echo $database
done
else
db_schema_sync $database_name
fi
\ No newline at end of file
#!/bin/sh
# -------------------------------------------------------------------------------
# Filename: gen_config.sh
# Revision: 1.0
# Date: 2016/12
# Author: dekun.dai
# Description: 生成一个同步表结构用的配置文件
# -------------------------------------------------------------------------------
source ~/.bash_profile
source_db_host=$1
source_db_user=$2
source_db_pwd=$3
target_db_host=$4
target_db_user=$5
target_db_pwd=$6
sync_db_name=$7
config_file_name=$8
port=""
sync_config_folder=~/db_sync_configs
base_config_file=$sync_config_folder/base_config.json
if [ $# -ne 8 ]; then
echo "gen_config.sh"
echo "Total Number of Parameters : $#"
echo "source_db_infos:source_db_host: $1, source_db_user: $2"
echo "target_db_infos:target_db_host: $4, target_db_user: $5"
echo "sync_db_name: $7"
echo "config_file_name: $8"
exit 1
fi
echo "prepare to get port"
if [[ $sync_db_name = 'xyqb' ]]; then
# 信用钱包database
# repay v_manifest v_repay 是view类型的
# secure_proxy 表里面的数据需要被同步
sys_table_list='baitiao_merchant baitiao_secure_key channel funding_contract funding_corp loan_product merchant_channel payeco_return_url_info red_packet t_phonenum zmxy_return_url configuration repay v_manifest v_repay secure_proxy'
port='3306'
elif [[ $sync_db_name = 'xyqb_app' ]]; then
# app-backend使用的数据库
sys_table_list='activities app_banners app_config app_versions banners blanknote_entries credit_questions hot_games loan_banners loan_questions migrations sharings widgets'
port='3307'
elif [[ $sync_db_name = 'payment_center' ]]; then
# 支付中心
sys_table_list='card_switcher merchant merchant_config pay_approach_config'
port='3308'
elif [[ $sync_db_name = 'risk_control' ]]; then
# 谛听database
sys_table_list='company product_strategy_dispatcher quantify_product red_packet_info socketio_init_parameters user'
port='3309'
elif [[ $sync_db_name = 'dujiangyan' ]]; then
# dujiangyan
sys_table_list='baitiao_secure_key external_coopr'
port='3310'
elif [[ $sync_db_name = 'mall' ]]; then
# 白条商城
sys_table_list='activity_3c_product ad_detail new_3c_product supplier 3c_product 3c_product_spec apix_phone_recharge_detail apix_recharge_project apix_recharge_project_bak category configuration course_detail_info course_info merchant pay19_recharge_project product'
port='3310'
elif [[ $sync_db_name = 'qinqiong' ]]; then
# qinqiong
sys_table_list='secure_key secure_proxy'
port='3310'
elif [[ $sync_db_name = 'quartz' ]]; then
# 定时任务
sys_table_list='certain_time_job'
port='3310'
elif [[ $sync_db_name = 'contract' ]]; then
# 合同
sys_table_list=''
port='3311'
elif [[ $sync_db_name = 'financial_system' ]]; then
# 财务系统
sys_table_list='collection_user sys_dictionary sys_status_edge sys_status_transfer_data_record sys_status_transfer_record sys_status_vertice'
port='3311'
elif [[ $sync_db_name = 'gyxd' ]]; then
# 广源小贷系统
sys_table_list='collection_user sys_dictionary sys_status_edge sys_status_transfer_data_record sys_status_transfer_record sys_status_vertice'
port='3311'
elif [[ $sync_db_name = 'offline' ]]; then
# 线下白条
sys_table_list='goods_detail merchant operator_user'
port='3311'
elif [[ $sync_db_name = 'sms-center' ]]; then
# 线下白条
sys_table_list='current_index merchant merchant_config sms_content sms_platform'
port='3311'
elif [[ $sync_db_name = 'spider_center' ]]; then
# 授信中心
sys_table_list='merchant merchant_config'
port='3312'
fi
echo "port is $port"
echo "copy ${base_config_file} to ${config_file_name}"
cp $base_config_file $config_file_name
echo "sed -i s/source_db_host/${source_db_host}/g $config_file_name"
sed -i "s/source_db_host/${source_db_host}/g" $config_file_name
sed -i "s/source_db_user/${source_db_user}/g" $config_file_name
sed -i "s/source_db_pwd/${source_db_pwd}/g" $config_file_name
sed -i "s/target_db_host/${target_db_host}/g" $config_file_name
sed -i "s/target_db_user/${target_db_user}/g" $config_file_name
sed -i "s/target_db_pwd/${target_db_pwd}/g" $config_file_name
sed -i "s/sync_db_name/${sync_db_name}/g" $config_file_name
sed -i "s/source_port/${port}/g" $config_file_name
{
"Code": "0",
"Result": {
"Count": 1,
"Hotels": [
{
"HotelId": "50101472",
"LowRate": 1000,
"CurrencyCode": "RMB",
"Distance": 0,
"BookingRules": [
{
"BookingRuleId": 89551,
"TypeCode": "PerRoomPerName",
"DateType": "BookDay",
"StartDate": "2014-01-03T00:00:00+08:00",
"EndDate": "2038-01-19T00:00:00+08:00",
"StartHour": "00:00:00",
"EndHour": "23:59:00",
"Description": "酒店要求每个房间至少提供一名入住客人的姓名"
}
],
"GuaranteeRules": [],
"PrepayRules": [],
"ValueAdds": [
{
"ValueAddId": "51030_05_183827",
"TypeCode": "05",
"IsInclude": true,
"Amount": 0,
"CurrencyCode": "RMB",
"PriceOption": "Percent",
"Price": 15,
"IsExtAdd": false,
"ExtOption": "Money",
"ExtPrice": 0,
"Description": "附加服务:包含服务费;"
}
],
"DrrRules": [],
"Rooms": [
{
"RoomId": "1048",
"Name": "行政楼层豪华间.",
"RatePlans": [
{
"Status": true,
"CustomerType": "All",
"CurrentAlloment": 0,
"InstantConfirmation": false,
"IsLastMinuteSale": false,
"StartTime": "00:00:00",
"EndTime": "23:59:00",
"TotalRate": 1000,
"AverageRate": 1000,
"CurrencyCode": "RMB",
"Coupon": -1,
"NightlyRates": [
{
"Member": 1000,
"Cost": -1,
"Status": false,
"AddBed": -1,
"Date": "2016-08-15T00:00:00+08:00"
}
],
"BookingRuleIds": "89551",
"GuaranteeRuleIds": "",
"ValueAddIds": "51030_05_183827",
"RoomTypeId": "1040",
"HotelCode": "50101472",
"InvoiceMode": "Hotel",
"RatePlanId": 183827,
"RatePlanName": "不 含 早",
"MinAmount": 1,
"MinDays": 1,
"MaxDays": 365,
"PaymentType": "SelfPay"
}
]
}
],
"Gifts": [],
"HAvailPolicys": []
}
]
},
"Guid": "508c2abc-db69-4e50-af84-f1ba1bf88005"
}
\ No newline at end of file
This diff is collapsed.
{
"msg":"NOT FOUND VALID JSON FILE"
}
\ No newline at end of file
{"data":"mkkwzj9eZ5Djt7Nc5AjT3VcWADFUnwgmEH/DLBOvHUDKZ+lQuIZiCDYZXonzzTN1b2XDFnlaXPBEs73v+zWB/HahFRhfCa0RCZwlCLlD0nNMO8JoAcbezNn1clDN9r7N4K9Oj75uK0O1Spj7XRpuT6H7U/G4wbNaFQqE9cPO9eo9sEh7r6Xvs9af5dmg3nxr+Pz1iJys9Ju3IlHvc40XUAMk8h7wnBhEedfh2b3Iub/McCbW+GH5UGSVWO/Q7ruw8cIzokk8OKim6TkedWMgyXhKRyK/d/afR90vhR4tHlSCdPf1eF4Q7czjJemxwH15pHsBvd+nJSndkTW4bYIEilqIrs7K8v7y/qCNgAhSK4g4m/xDP8oUO+TFFSHSIRRrI4wymgaIqoV0dh82wYzAj7avOLm6FP80BxmjixuCj7g=","encryptkey":"UT61C9FWJEo65HWRDkiC+c/y9wmuFLWwLDl2k2O6402zlMfQMvmtS9edaq/aEw/5jDV5HPDLmo8ITcD8nCeOms9fLRmhCVUzRFL3QJLgy/L4nX/knLzS++lX1SmnpWuyERsO/x6Ffep/J8DSdqQEp8d8oPoW95RTCAkwgTlWxOE="}
\ No newline at end of file
{"data":"rqTp08JqRJ6PLUSO7vAF2mK1KRsUeEkw3f44MflK/v6SwSYg/G4ZPARm9fhX182aAeDPiCXaFYPwh1S11yJZKh5eYc1cPnF5K8EP6Ia7LDLjekVKzN+BPnlbGlP6rTUBsVsJRuiLQW1fg+jXfkvv5ZDbpxnlKg/++3cD9aruYhALvw/WevgQArXy8BRXHEJywrzFh4AxAfJq2wLXOApaWRaGS0DtYeKhibcxJ7Dy8JmCZ336Tv6PcuqSbeMFSI5envTFDBvD/95oW3gwETH4fyCe3aFYhOtjKlchC17EUytDiRu4ypZNti2mCvINjIdhxXHlnvbb2cduLTqgK6soB7wi6suh0nGIPGugFSPWFyhRdKRs5udner4FSiWSpl/reOEDFNFu3Md7eBruynpk8w==","encryptkey":"faT4I5xbcajX4txNjZmlgaYWYmCZY1eVN6ZgO6R31C2iIcTkYHEbkm6Qz0vhjAHiAjISFFsMo+5Hkm+11a2grBJBfjNLE84BmVA9h14Ax5Xq1VFVNzXJWnz12PKcUy41ZnLMq0yDrEku+8Qu5V0y59A4yttfPyO3uxoLhieO5oI="}
\ No newline at end of file
{"data":"Rm/G6WgIpmShaIZrT94MABQJvei1v3ENnGaYOXANjzi9NcfBycHowLyoZXg0R6WyP5lBR3+IXhcpE9oayOiuGdgRTPyzCWsZKT/mdAd46i59FQ1GE0K7l6tznyxBWgSB3vuFuZG5K7V/vHMCo1qS0zewMbMv9Wph8/YZwwvMwbYDQ7XRWFypp4kZjVYGuSOhaxD3R/CCrXtmBUvojlVmwHS/QmeRfR8RqvQOopi1sdRemmD3sPSlLBpifcc66A2uVBI+gvf3hAsmVJun0ZV50chaclSU7Ae0Yqa98OEtg5JsKV7ct5b9jthDisnmns3s","encryptkey":"c8ebBbMlBizYDY5qsK/se1vPoXhkiPmVzuBrE8+30mHJlwQBeUJ18dgku9kQ6Gjmlw3KisYBawosO7na7iz8XWMvAXrMOXbq4W0Ml85zQbMrhJPsPyqwLX2v9/Trq7zLo9BAdDwDR5RdJThu7pDsd6d5H5lpPwvULeq05Loqpx0="}
\ No newline at end of file
{
"msg":"NOT FOUND VALID JSON FILE"
}
\ No newline at end of file
{"data":"s7NATmIpP42mgK3ycM9PKmOTQAMMeGVXZFV6N3sDRna/SjGC9/WdXO0WLnU/awB3gBJq5eu35UXkVeVcvjWqU4MKwbnaJzi+4+vaTalSBuP7+Y3GKaFT0h3jbTinT4zXl8XK9o7DyoLUD8LO3a+fbZDgU488POYtcWqWY5h4TpounQW/Ia9JjBye27rX1Jvc7jx19tY2XmFyd+EhWNxE4ES4DEpgIDYxNF6MpnLOwl2KXhmKCUNcxQLLW7oRiHuYlSXMAKGJrMblHrOQjTEPdl0h+zazf+OlP28molylcXk9gJYeG96rNdy4MAq+BLylH0YB/q34+2eGDrCvaKqHI3M1n/kkvnVH7LR5B35iALQidJa5eMTRzdKDRV9z+6QMob4nh54kXZiw9OGxmlTztluLAQzBoWGl0XiPvWy97P+NU5O4dWMyT0e9ZJuro73s59iCMfFXgjY2UOJ5QbhFtHfCSjQUiYui4rrU9K9QPVd3jW4L63D5BvRLH6xYbHh/","encryptkey":"ctEzYqNThpG3vAFmgohqC31KB2Zyr4xEfPE3Mbn+XDBJ3QVBrL49Ix8ywew0Wf+SYMUi4FTzfE4DRXj9vA7Mua4GmPmGy1QxoREGakI+icGvfFs6dqc+9fwGZ6sRbDuLk0e0/R04ILsPX2rTCnr8b+FXEQJ7Coe14CNES3U1MQo="}
\ No newline at end of file
{
"msg":"NOT FOUND VALID JSON FILE"
}
\ No newline at end of file
{"data":"jaEY2KrB1OwAUR+2rqPuMJAdblcgBz5MZD1BMXnzz41Brxh7zjGyf8WpLkk61ScuT2JV9BX3PMPZoaQ+6K+sfFkijJVRFxa2w75wdNPejjt6by9WuLMvRN0QO3wxSdiHuoCyvlfIwvh8HxPqxOhLxUMJJAxfh+8OagnZLuT98X0JIRoy7xnsdcBqvjTtHvkKxjJk5rRdcXZT1c9aPJWvb7bKan3C13zCcbUWONubmZ8JT6Q8+hjyELkBg5MwLzp1ysUUqD7ILgxMXlCPaM6AabtiSiNOQQlua+r73mESMebJZbDkXOPuCxkgBDG10LuNB8I1BBMZ3dWe4EoZAY0pJEXezn4b3uYQ77dZAPVUpxQ=","encryptkey":"N1nsBerhhvpxC6U4+yd4Y2+1Dksl+HZi37z1vGQGXbqLWUGDEw6zizxW9sp5epXaWEX3v0ny1cO5SPGXrFsgaPI+5CJT1cQ6MYMjbdeIo99Mujj3i7tIm6rnlBDDybRDS0gSaB4CR508nhRsaAiDrXGn/MfhNwK/Uv3mwFZ9QUg="}
\ No newline at end of file
{"data":"0UaDh9LblxMz7O+hFr9tgnGHSJQpgMEQh32//XOFrve5aZ3w2/BRWz3yPm0WjYysB25HSzGDjK7bUHLOqD9SeE8LFVuVOxePlUUXyhpeSUS6i8HJ18C9UHqXosh94+ThYSB1QxgDZy3CdvjUpXRpAX2+c/Qfzjmd0ER6OcC7RMlcH4BRa6h7vOJsTfzzI/mMDQrEOetxkAq7YmgqQpVmVE7rsl+y6VBsGIOw7639FpHvGFw7gyTuXJb13rDHuGPiFkbWAtL9suDLOQLUZ43wOD5jWVRawZWlHZPlkMii4c0V6byJwPOomhlx3bXH2HnvHNpFcVXZmtZdv1R/7IJDWS1SLwIwNHSmhKVgAsFLl/bT3bPtEaaWz+37V0AH6YyE","encryptkey":"JdKTwA5Iz9enRGKjtdiov/irYdX6D47S8r8L0tnmUBRF8cEI3B9b1w85k9xIsbhrwvc63JSSkEirIUPdm3CrznW4g6hLpaZ4PTbcxfr65Zf2/oPwdo55GEGkFpRYzX6XGliUPFb8pPm29tkJGj3w7XwajGaLlpDnQkiXTQBsDaQ="}
\ No newline at end of file
{
"msg":"NOT FOUND VALID JSON FILE"
}
\ No newline at end of file
{"data":"DUpT9ZVdGdFtkiDwkV5FBy0M4R4z4YcwHIKcBteYyGNiep1RoYFvDQ9xshRkD4z74KBoKRZYJgyRdyeGnlHiR4JEpPvAkZDNhtLuj+HTJy40GcL4h4FYkZThXg/T/D6UoXavPPhz+AzZzGVEwzlW7181rOHRFtqzbfb22L3TFSrhXKDU9zOJFXwaTfH9+WHKODHHoVOjzmBgx8XqVrr1Qgq7k7GPl/rCH8zOdtl6A2wHyn5bN0/O2uWF23HbMfrhLmSzjEwkYO88rVrpol9cwNvwERmlvTpHNkimIk0bV00iE/D85tLfSW7WMjZaSqXIg8WCBQYphmGauE6WzSLunI+Mt/DsEwIEXupKbpCe9viATqrZVJ14qDUH9GPbuQ6JdSgca+GLPCPh9gCIFPx/J+BbpPdRRD7goEtOGplN8jl3DaqXvXSXeaQuZRuE93tkCsJXCZxLF1bb2lxj5Di/VlKyBj2/DMRrTVAFHq6g/gQDQ0yyifKxMc0S7S2Ei2Ib9zV47RrzEMm49viYv8dUxJs5uu/0mQ1SiCHjOc3tJvoXaXv6kjj4AGH88n4twEj6azdx4rEkjjIYZZKHX6tx+n8Ptx16zpXQywRIBjK+CVDRO40Xr02VqsRxYXoukCIZ","encryptkey":"Z9PTP1QBVuKyrGZCGlyA6cA/FHTLfew4kxay51TnjuoZIf/AQq32gScIbGKE5a2Hnie28WOFl0NZlRJMpbfS/zgR62oHI5SjaTjU4nwjrkTwPqLhqhqpjKItT8wTzcfPNIVlxz1Xb1VlO+0QV5CvN3GPM4MT3+6zGQdXkPVJS8g="}
\ No newline at end of file
{"data":"rXKvZtISfL3C3ZMER6JukgtkBwwFn9DoqJ5f69OEnK1ESrNa8cNEwvnxGxrniEK27O3+VL5qmd/eGeg9Lanjfy8VuatsorCsWxlDmWYtE9WzJDtbL0Hh3dswNUUnJ7eKRtkIPonYwqeoMS1zIyaljSBbNgg6xmyGZAIsRxQALcDPSmEeslhN2nTqI1qi/2wFHqgYqaCQH60XgBkpQwqmC1zsN71/rO6gRBENXZxDstiQ5k/MT4oveTYeI2rqJzMpcnlDCoUbLkP+uRPWDZBYu0wrCsbshNhbquQwpIGtElxRL8WCL+bSWnJcLm5XxnqjWMqYh5Uew0CvG7BwXxwyevJ/xS+TKDYok27OAZhcz9M8VBK8BtBBUPvTtooMZxvs","encryptkey":"eePwoo7DuL4q87sLI8giIAkuBe9T3Wyn9M3hsLK+Uh2vvg8rDauEXxkyb+9Nl+dK9/RTsjC7tAXHjVlVNOwVlczlVLguRhbg1a+6nkwkNmCVhM/3lGyBYSqWOs7ktNSZfBcqK6/JbujtsAWFpFRTShj8S14uPMXRWEjHB+wyHg0="}
\ No newline at end of file
{"data":"3Pp1DPPH/u4CmcQzrj/XnafpJtGiDEXMfSzcrrhG/okUSl0VjtdMq3Kz+BVOcxmDLQ2WCLyLIb16+gR+Yy/Bj9FwuoAwHNljTqRMZeI/5ODmVKep2g1q6c5x9r2eykFJy+H6QcaUXeuwB89tAM11GfnFU0L8KELLGhqJz3chzU4dtkXXX7+flotCuK/OxT8MFhsGuYrzzAfwIXIO8d+NTQNTLpIV+KQ299yVeLUzfd9CznuyVor7gODdVphhM2h37kxAgcgbpgeg0SzXlq8zpRHXxC+aqzORauW2dU7pAt+Ty25K36AjTA/r3RDpoFY/D1+juhdBXF6ZGoT9lWq56UOe8yuOOOzXpWXC5tDr2i/6OU4ffCq6jolI2uxGMqrIeClugd1GI4Ts1i5dORdSMJq7kN5vgZ77lA0KQRjN2ymVHHl6l3RGobsXKB1VhVEmQDs8DcIic0IuckDT+D9MMy566LRgJbvKzPLzmnjMjKabyncTPTMrswN3uY5H1/Sx","encryptkey":"OWOpx7Jtc2lagKPNu8d519rvEIsO4ydcEf7PubQAXsNryxsL5r08oxpN1GjMTbvW9yHPi9k22UbZD2BHThLDophkHC+s9Kd6Nd5LXGKwknkeS7JzYR8LEO80iQvxYkclkKp/FWvbgMUNvd7t4p7tVx40xq6krEH34tpUevzMX9c="}
\ No newline at end of file
{
"msg": "用户已经成功授权过",
"code": "0000",
"businessCode": "0000",
"data": true,
"success": true
}
# from . import elong_mocker
\ No newline at end of file
#-*- coding: UTF-8 -*-
import sys
sys.path.append("..")
import os
from flask import Flask, jsonify, request,json
from utils.crossdomain import crossdomain
app = Flask(__name__)
mockdir = os.path.dirname(os.path.realpath(__file__))
print mockdir
# ***
# *** 艺龙接口
# ***
# /payapi/rest
@app.route("/payapi/rest", methods=['GET'])
@crossdomain(origin='*')
def login():
if request.method == 'GET':
method = request.args.get('method')
if method == 'hotel.list':
json_data = open(mockdir+'/../json/elong_hotel-list.json')
elif method == 'hotel.detail':
json_data = open(mockdir+'/../json/elong_hotel-detail.json')
else:
print 'Error: method does not exit!'
return jsonify(json.load(json_data))
if __name__ == '__main__':
# 内部监听使用127.0.0.1
# app.run(debug=True, host="127.0.0.1", port=9000)
# 公开IP监听
app.run(debug=True, host="0.0.0.0", port=9001)
#-*- coding: UTF-8 -*-
import sys
sys.path.append("..")
import os
from flask import Flask, jsonify, request,json
from utils.crossdomain import crossdomain
# from OpenSSL import OpenSSL
app = Flask(__name__)
mockdir = os.path.dirname(os.path.realpath(__file__))
# ***
# *** *** *** 1 *** ***
# *** 绑卡请求接口
# *** https://ok.yeepay.com/payapi/api/tzt/invokebindbankcard
# *** HTTP 请求方式:POST
# ***
@app.route("/payapi/api/tzt/invokebindbankcard", methods=['POST', 'OPTIONS'])
@crossdomain(origin='*')
def invokebindbankcard():
if request.method == 'OPTIONS': return ''
if request.method == 'POST':
json_data = open(mockdir+'/../json/yeepay_invokebindbankcard.json')
return jsonify(json.load(json_data))
# ***
# *** *** *** 2 *** ***
# *** 确定绑卡接口
# *** https://ok.yeepay.com/payapi/api/tzt/confirmbindbankcard
# *** HTTP 请求方式:POST
# ***
@app.route("/payapi/api/tzt/confirmbindbankcard", methods=['POST', 'OPTIONS'])
@crossdomain(origin='*')
def confirmbindbankcard():
if request.method == 'OPTIONS': return ''
if request.method == 'POST':
json_data = open(mockdir+'/../json/yeepay_confirmbindbankcard.json')
return jsonify(json.load(json_data))
# ***
# *** *** *** 3: not sure whether be used *** ***
# *** 查询绑卡信息列表
# *** https://ok.yeepay.com/payapi/api/bankcard/authbind/list
# *** HTTP 请求方式:GET
# *** 请求参数:merchantaccount,identityid,identitytype,sign
# ***
@app.route("/payapi/api/bankcard/authbind/list", methods=['GET'])
@crossdomain(origin='*')
def bankcard_authbind_list():
if request.method == 'GET':
json_data = open(mockdir+'/../json/yeepay_bankcard_authbind_list.json')
return jsonify(json.load(json_data))
# ***
# *** *** *** 4 *** ***
# *** 银行卡信息查询
# *** https://ok.yeepay.com/payapi/api/bankcard/check
# *** HTTP 请求方式:POST
# *** 请求参数:merchantaccount,cardno,sign
# ***
@app.route("/payapi/api/bankcard/check", methods=['POST'])
@crossdomain(origin='*')
def bankcard_check():
if request.method == 'POST':
json_data = open(mockdir+'/../json/yeepay_bankcard_check.json')
return jsonify(json.load(json_data))
# ***
# *** *** *** 5 *** ***
# *** 支付请求接口
# *** https://ok.yeepay.com/payapi/api/tzt/pay/bind/reuqest
# *** HTTP 请求方式:POST
# *** 请求参数:merchantaccount,orderid,transtime,currency,currency,productname,productname,identityid,identitytype,card_top
# *** card_last,orderexpdate,callbackurl,imeiuserip,ua,sign
# ***
@app.route("/payapi/api/tzt/pay/bind/reuqest", methods=['POST'])
@crossdomain(origin='*')
def pay_bind_request():
if request.method == 'POST':
json_data = open(mockdir+'/../json/yeepay_pay_bind_request.json')
return jsonify(json.load(json_data))
# ***
# *** *** *** 6 *** ***
# *** 发送短信验证码接口
# *** https://ok.yeepay.com/payapi/api/tzt/pay/validatecode/send
# *** HTTP 请求方式:POST
# *** 请求参数:merchantaccount,orderid,sign
# ***
@app.route("/payapi/api/tzt/pay/validatecode/send", methods=['POST'])
@crossdomain(origin='*')
def validatecode_send():
if request.method == 'POST':
json_data = open(mockdir+'/../json/yeepay_validatecode_send.json')
return jsonify(json.load(json_data))
# ***
# *** *** *** 7 *** ***
# *** 确认支付
# *** https://ok.yeepay.com/payapi/api/tzt/pay/confirm/validatecode
# *** HTTP 请求方式:POST
# *** 请求参数:merchantaccount,orderid,validatecode,sign
# ***
@app.route("/payapi/api/tzt/pay/confirm/validatecode", methods=['POST'])
@crossdomain(origin='*')
def confirm_validatecode():
if request.method == 'POST':
json_data = open(mockdir+'/../json/yeepay_confirm_validatecode.json')
return jsonify(json.load(json_data))
# ***
# *** *** *** 8 *** ***
# *** 支付结果查询
# *** https://ok.yeepay.com/payapi/api/query/order
# *** HTTP 请求方式:GET
# *** 请求参数:merchantaccount,orderid,sign
# ***
@app.route("/payapi/api/query/order", methods=['GET'])
@crossdomain(origin='*')
def query_order():
if request.method == 'GET':
json_data = open(mockdir+'/../json/yeepay_query_order.json')
return jsonify(json.load(json_data))
# ***
# *** *** *** 9 *** ***
# *** 提现接口
# *** https://ok.yeepay.com/payapi/api/tzt/withdraw
# *** HTTP 请求方式:POST
# *** 请求参数: TBD
# ***
@app.route("/payapi/api/tzt/withdraw", methods=['GET'])
@crossdomain(origin='*')
def withdraw():
if request.method == 'GET':
json_data = open(mockdir+'/../json/yeepay_withdraw.json')
return jsonify(json.load(json_data))
# ***
# *** *** *** 10 *** ***
# *** 提现查询接口
# *** https://ok.yeepay.com/payapi/api/tzt/drawrecord
# *** HTTP 请求方式:GET
# *** 请求参数:TBD
# ***
@app.route("/payapi/api/tzt/drawrecord", methods=['GET'])
@crossdomain(origin='*')
def drawrecord():
if request.method == 'GET':
json_data = open(mockdir+'/../json/yeepay_drawrecord.json')
return jsonify(json.load(json_data))
# ***
# *** *** *** 11 *** ***
# *** 可提现余额接口
# *** https://ok.yeepay.com/payapi/api/tzt/drawvalidamount
# *** HTTP 请求方式:GET
# *** 请求参数:TBD
# ***
@app.route("/payapi/api/tzt/drawvalidamount", methods=['GET'])
@crossdomain(origin='*')
def drawvalidamount():
if request.method == 'GET':
json_data = open(mockdir+'/../json/yeepay_drawvalidamount.json')
return jsonify(json.load(json_data))
# ***
# *** *** *** 12: not sure whether used *** ***
# *** 支付接口--不发送短验
# *** https://ok.yeepay.com/payapi/api/tzt/directbindpay
# *** HTTP 请求方式:POST
# *** 请求参数:TBD
# ***
@app.route("/payapi/api/tzt/directbindpay", methods=['GET'])
@crossdomain(origin='*')
def directbindpay():
if request.method == 'GET':
json_data = open(mockdir+'/../json/yeepay_directbindpay.json')
return jsonify(json.load(json_data))
# ***
# *** *** *** 13 *** ***
# *** 交易记录查询
# *** https://ok.yeepay.com/merchant/query_server/pay_single
# *** HTTP 请求方式:GET
# *** 请求参数:merchantaccount,orderid,yborderid,sign
# ***
@app.route("/merchant/query_server/pay_single", methods=['GET'])
@crossdomain(origin='*')
def pay_single():
if request.method == 'GET':
json_data = open(mockdir+'/../json/yeepay_pay_single.json')
return jsonify(json.load(json_data))
# ***
# *** *** *** 14: not used in pay-center *** ***
# *** 获取消费清算对账单记录
# *** https://ok.yeepay.com/merchant/query_server/pay_clear_data
# *** HTTP 请求方式:GET
# *** 请求参数:merchantaccount,startdate,enddate,sign
# ***
# @app.route("/merchant/query_server/pay_clear_data", methods=['GET'])
# @crossdomain(origin='*')
# def pay_clear_data():
# if request.method == 'GET':
# json_data = open(mockdir+'/../json/yeepay_pay_clear_data.json')
# return jsonify(json.load(json_data))
# ***
# *** *** *** 15: not used in pay-center *** ***
# *** 退货退款
# *** https://ok.yeepay.com/merchant/query_server/direct_refund
# *** HTTP 请求方式 :POST
# *** 请求参数:amount,currency,cause,merchantaccount,orderid,origyborderid,sign
# ***
# @app.route("/merchant/query_server/direct_refund", methods=['POST'])
# @crossdomain(origin='*')
# def direct_refund():
# if request.method == 'POST':
# json_data = open(mockdir+'/../json/yeepay_direct_refund.json')
# return jsonify(json.load(json_data))
# ***
# *** *** *** 16: not used in pay-center *** ***
# *** 退货退款记录查询
# *** https://ok.yeepay.com/merchant/query_server/refund_single
# *** HTTP 请求方式:GET
# *** 请求参数:merchantaccount,orderid,yborderid,sign
# ***
# @app.route("/merchant/query_server/refund_single", methods=['GET'])
# @crossdomain(origin='*')
# def refund_single():
# if request.method == 'GET':
# json_data = open(mockdir+'/../json/yeepay_refund_single.json')
# return jsonify(json.load(json_data))
# ***
# *** *** *** 17: not used in pay-center *** ***
# *** 获取退款清算对账记录
# *** ttps://ok.yeepay.com/merchant/query_server/refund_clear_data
# *** HTTP 请求方式:GET
# *** 请求参数:merchantaccount,startdate,enddate,sign
# ***
# @app.route("/merchant/query_server/refund_clear_data", methods=['GET'])
# @crossdomain(origin='*')
# def refund_clear_data():
# if request.method == 'GET':
# json_data = open(mockdir+'/../json/yeepay_refund_clear_data.json')
# return jsonify(json.load(json_data))
if __name__ == '__main__':
# 内部监听使用127.0.0.1
# app.run(debug=True, host="127.0.0.1", port=9000)
# 公开IP监听
app.run(debug=True, host="0.0.0.0", port=9002)
#-*- coding: UTF-8 -*-
import sys
sys.path.append("..")
import os
from flask import Flask, jsonify, request,json
from utils.crossdomain import crossdomain
app = Flask(__name__)
mockdir = os.path.dirname(os.path.realpath(__file__))
# ***
# *** *** *** 1 *** ***
# *** 绑卡请求接口
# *** https://ok.yeepay.com/payapi/api/tzt/invokebindbankcard
# *** HTTP 请求方式:POST
# ***
@app.route("/payapi/api/tzt/invokebindbankcard", methods=['POST', 'OPTIONS'])
@crossdomain(origin='*')
def invokebindbankcard():
if request.method == 'OPTIONS': return ''
if request.method == 'POST':
json_data = open(mockdir+'/../json/yeepay_invokebindbankcard.json')
return jsonify(json.load(json_data))
# ***
# *** *** *** 2 *** ***
# *** 确定绑卡接口
# *** https://ok.yeepay.com/payapi/api/tzt/confirmbindbankcard
# *** HTTP 请求方式:POST
# ***
@app.route("/payapi/api/tzt/confirmbindbankcard", methods=['POST', 'OPTIONS'])
@crossdomain(origin='*')
def confirmbindbankcard():
if request.method == 'OPTIONS': return ''
if request.method == 'POST':
json_data = open(mockdir+'/../json/yeepay_confirmbindbankcard.json')
return jsonify(json.load(json_data))
# ***
# *** *** *** 3: not sure whether be used *** ***
# *** 查询绑卡信息列表
# *** https://ok.yeepay.com/payapi/api/bankcard/authbind/list
# *** HTTP 请求方式:GET
# *** 请求参数:merchantaccount,identityid,identitytype,sign
# ***
@app.route("/payapi/api/bankcard/authbind/list", methods=['GET'])
@crossdomain(origin='*')
def bankcard_authbind_list():
if request.method == 'GET':
json_data = open(mockdir+'/../json/yeepay_bankcard_authbind_list.json')
return jsonify(json.load(json_data))
# ***
# *** *** *** 4 *** ***
# *** 银行卡信息查询
# *** https://ok.yeepay.com/payapi/api/bankcard/check
# *** HTTP 请求方式:POST
# *** 请求参数:merchantaccount,cardno,sign
# ***
@app.route("/payapi/api/bankcard/check", methods=['POST'])
@crossdomain(origin='*')
def bankcard_check():
if request.method == 'POST':
json_data = open(mockdir+'/../json/yeepay_bankcard_check.json')
return jsonify(json.load(json_data))
# ***
# *** *** *** 5 *** ***
# *** 支付请求接口
# *** https://ok.yeepay.com/payapi/api/tzt/pay/bind/reuqest
# *** HTTP 请求方式:POST
# *** 请求参数:merchantaccount,orderid,transtime,currency,currency,productname,productname,identityid,identitytype,card_top
# *** card_last,orderexpdate,callbackurl,imeiuserip,ua,sign
# ***
@app.route("/payapi/api/tzt/pay/bind/reuqest", methods=['POST'])
@crossdomain(origin='*')
def pay_bind_request():
if request.method == 'POST':
json_data = open(mockdir+'/../json/yeepay_pay_bind_request.json')
return jsonify(json.load(json_data))
# ***
# *** *** *** 6 *** ***
# *** 发送短信验证码接口
# *** https://ok.yeepay.com/payapi/api/tzt/pay/validatecode/send
# *** HTTP 请求方式:POST
# *** 请求参数:merchantaccount,orderid,sign
# ***
@app.route("/payapi/api/tzt/pay/validatecode/send", methods=['POST'])
@crossdomain(origin='*')
def validatecode_send():
if request.method == 'POST':
json_data = open(mockdir+'/../json/yeepay_validatecode_send.json')
return jsonify(json.load(json_data))
# ***
# *** *** *** 7 *** ***
# *** 确认支付
# *** https://ok.yeepay.com/payapi/api/tzt/pay/confirm/validatecode
# *** HTTP 请求方式:POST
# *** 请求参数:merchantaccount,orderid,validatecode,sign
# ***
@app.route("/payapi/api/tzt/pay/confirm/validatecode", methods=['POST'])
@crossdomain(origin='*')
def confirm_validatecode():
if request.method == 'POST':
json_data = open(mockdir+'/../json/yeepay_confirm_validatecode.json')
return jsonify(json.load(json_data))
# ***
# *** *** *** 8 *** ***
# *** 支付结果查询
# *** https://ok.yeepay.com/payapi/api/query/order
# *** HTTP 请求方式:GET
# *** 请求参数:merchantaccount,orderid,sign
# ***
@app.route("/payapi/api/query/order", methods=['GET'])
@crossdomain(origin='*')
def query_order():
if request.method == 'GET':
json_data = open(mockdir+'/../json/yeepay_query_order.json')
return jsonify(json.load(json_data))
# ***
# *** *** *** 9 *** ***
# *** 提现接口
# *** https://ok.yeepay.com/payapi/api/tzt/withdraw
# *** HTTP 请求方式:POST
# *** 请求参数: TBD
# ***
@app.route("/payapi/api/tzt/withdraw", methods=['GET'])
@crossdomain(origin='*')
def withdraw():
if request.method == 'GET':
json_data = open(mockdir+'/../json/yeepay_withdraw.json')
return jsonify(json.load(json_data))
# ***
# *** *** *** 10 *** ***
# *** 提现查询接口
# *** https://ok.yeepay.com/payapi/api/tzt/drawrecord
# *** HTTP 请求方式:GET
# *** 请求参数:TBD
# ***
@app.route("/payapi/api/tzt/drawrecord", methods=['GET'])
@crossdomain(origin='*')
def drawrecord():
if request.method == 'GET':
json_data = open(mockdir+'/../json/yeepay_drawrecord.json')
return jsonify(json.load(json_data))
# ***
# *** *** *** 11 *** ***
# *** 可提现余额接口
# *** https://ok.yeepay.com/payapi/api/tzt/drawvalidamount
# *** HTTP 请求方式:GET
# *** 请求参数:TBD
# ***
@app.route("/payapi/api/tzt/drawvalidamount", methods=['GET'])
@crossdomain(origin='*')
def drawvalidamount():
if request.method == 'GET':
json_data = open(mockdir+'/../json/yeepay_drawvalidamount.json')
return jsonify(json.load(json_data))
# ***
# *** *** *** 12: not sure whether used *** ***
# *** 支付接口--不发送短验
# *** https://ok.yeepay.com/payapi/api/tzt/directbindpay
# *** HTTP 请求方式:POST
# *** 请求参数:TBD
# ***
@app.route("/payapi/api/tzt/directbindpay", methods=['GET'])
@crossdomain(origin='*')
def directbindpay():
if request.method == 'GET':
json_data = open(mockdir+'/../json/yeepay_directbindpay.json')
return jsonify(json.load(json_data))
# ***
# *** *** *** 13 *** ***
# *** 交易记录查询
# *** https://ok.yeepay.com/merchant/query_server/pay_single
# *** HTTP 请求方式:GET
# *** 请求参数:merchantaccount,orderid,yborderid,sign
# ***
@app.route("/merchant/query_server/pay_single", methods=['GET'])
@crossdomain(origin='*')
def pay_single():
if request.method == 'GET':
json_data = open(mockdir+'/../json/yeepay_pay_single.json')
return jsonify(json.load(json_data))
# ***
# *** *** *** 14: not used in pay-center *** ***
# *** 获取消费清算对账单记录
# *** https://ok.yeepay.com/merchant/query_server/pay_clear_data
# *** HTTP 请求方式:GET
# *** 请求参数:merchantaccount,startdate,enddate,sign
# ***
# @app.route("/merchant/query_server/pay_clear_data", methods=['GET'])
# @crossdomain(origin='*')
# def pay_clear_data():
# if request.method == 'GET':
# json_data = open(mockdir+'/../json/yeepay_pay_clear_data.json')
# return jsonify(json.load(json_data))
# ***
# *** *** *** 15: not used in pay-center *** ***
# *** 退货退款
# *** https://ok.yeepay.com/merchant/query_server/direct_refund
# *** HTTP 请求方式 :POST
# *** 请求参数:amount,currency,cause,merchantaccount,orderid,origyborderid,sign
# ***
# @app.route("/merchant/query_server/direct_refund", methods=['POST'])
# @crossdomain(origin='*')
# def direct_refund():
# if request.method == 'POST':
# json_data = open(mockdir+'/../json/yeepay_direct_refund.json')
# return jsonify(json.load(json_data))
# ***
# *** *** *** 16: not used in pay-center *** ***
# *** 退货退款记录查询
# *** https://ok.yeepay.com/merchant/query_server/refund_single
# *** HTTP 请求方式:GET
# *** 请求参数:merchantaccount,orderid,yborderid,sign
# ***
# @app.route("/merchant/query_server/refund_single", methods=['GET'])
# @crossdomain(origin='*')
# def refund_single():
# if request.method == 'GET':
# json_data = open(mockdir+'/../json/yeepay_refund_single.json')
# return jsonify(json.load(json_data))
# ***
# *** *** *** 17: not used in pay-center *** ***
# *** 获取退款清算对账记录
# *** ttps://ok.yeepay.com/merchant/query_server/refund_clear_data
# *** HTTP 请求方式:GET
# *** 请求参数:merchantaccount,startdate,enddate,sign
# ***
# @app.route("/merchant/query_server/refund_clear_data", methods=['GET'])
# @crossdomain(origin='*')
# def refund_clear_data():
# if request.method == 'GET':
# json_data = open(mockdir+'/../json/yeepay_refund_clear_data.json')
# return jsonify(json.load(json_data))
if __name__ == '__main__':
# 内部监听使用127.0.0.1
# app.run(debug=True, host="127.0.0.1", port=9000)
# 公开IP监听
app.run(debug=True, host="0.0.0.0", port=9002)
#-*- coding: UTF-8 -*-
import os
from flask import Flask, jsonify, request,json
import mockers
from utils.crossdomain import crossdomain
from mockers.elong_mocker import login
app = Flask(__name__)
mockdir = os.path.dirname(os.path.realpath(__file__))
# ***
# *** 信用钱包:mocker server
# ***
@app.route("/run", methods=['GET'])
@crossdomain(origin='*')
def loan():
if request.method == 'GET':
return jsonify(msg='mocker server is started!', success=True)
if __name__ == '__main__':
app.run(debug=True, host="0.0.0.0", port=9000)
# from . import crossdomain
\ No newline at end of file
from datetime import timedelta
from flask import make_response, request, current_app
from functools import update_wrapper
def crossdomain(origin=None, methods=None, headers=None,
max_age=3600, attach_to_all=True,
automatic_options=True):
if methods is not None:
methods = ', '.join(sorted(x.upper() for x in methods))
if headers is not None and not isinstance(headers, basestring):
headers = ', '.join(x.upper() for x in headers)
if not isinstance(origin, basestring):
origin = ', '.join(origin)
if isinstance(max_age, timedelta):
max_age = max_age.total_seconds()
def get_methods():
if methods is not None:
return methods
options_resp = current_app.make_default_options_response()
return options_resp.headers['allow']
def decorator(f):
def wrapped_function(*args, **kwargs):
if automatic_options and request.method == 'OPTIONS':
resp = current_app.make_default_options_response()
else:
resp = make_response(f(*args, **kwargs))
if not attach_to_all and request.method != 'OPTIONS':
return resp
h = resp.headers
h['Server'] = 'Apache-Coyote/1.1'
h['Access-Control-Allow-Origin'] = origin
h['Access-Control-Allow-Methods'] = get_methods()
h['Access-Control-Max-Age'] = str(max_age)
if headers is not None:
h['Access-Control-Allow-Headers'] = headers
else:
h['Access-Control-Allow-Headers'] = 'Origin, No-Cache, x-auth-token, X-Requested-With, If-Modified-Since, Pragma, Last-Modified, Cache-Control, Expires, Content-Type,Authorization'
return resp
f.provide_automatic_options = False
return update_wrapper(wrapped_function, f)
return decorator
\ No newline at end of file
import sys
import paramiko
'''
a wrapper for remote shell
usage:
python rsh.py user host password 'commands'
e.g.
python rsh.py root 192.168.192.206 123456 'cd home/quant_group;ls -a'
'''
if __name__ == '__main__':
recv_nbytes = 1024
args = sys.argv
host, port, user, password = args[1], int(args[2]), args[3], args[4]
command_begin = 4
if '--tag=' in args[4]:
tag = args[4][6:] + ":"
command_begin += 1
else:
tag = ''
remain_args = ''
for arg in args[command_begin:]:
if ' ' not in arg:
remain_args += ' ' + arg
else:
remain_args += ' "' + arg + '" '
print tag + remain_args
def print_err(str_value):
sys.stderr.write(tag + str_value)
sys.stderr.flush()
def print_out(str_value):
sys.stdout.write(tag + str_value)
sys.stdout.flush()
client = paramiko.SSHClient()
client.load_system_host_keys()
client.get_transport()
client.set_missing_host_key_policy(paramiko.WarningPolicy())
client.connect(host, port, user, password)
transport = client.get_transport()
channel = transport.open_session(None)
channel.settimeout(None)
channel.exec_command(remain_args)
while True:
if channel.recv_ready():
ret_str = channel.recv(recv_nbytes)
if len(ret_str) == 0:
break
print_out(ret_str)
if channel.recv_stderr_ready():
ret_str = channel.recv_stderr(recv_nbytes)
if len(ret_str) == 0:
break
print_err(ret_str)
if channel.exit_status_ready():
ret_str = channel.recv(recv_nbytes)
if len(ret_str) != 0:
print_out(ret_str)
ret_str = channel.recv_stderr(recv_nbytes)
if len(ret_str) != 0:
print_err(ret_str)
client.close()
sys.exit(channel.recv_exit_status())
__author__ = 'Miraculous'
import sys
import paramiko
'''
a wrapper for remote scp
usage:
python rscp.py user host password remote_path current_file
'''
if __name__ == '__main__':
try:
args = sys.argv
host, port, user, password = args[1], args[2], args[3], args[4]
file_to_upload = args[5]
remote_path = args[6]
print 'scp: from'+file_to_upload+' to '+remote_path
client = paramiko.SSHClient()
client.load_system_host_keys()
client.get_transport()
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
client.connect(host, port, user, password)
sftp = client.open_sftp()
sftp.put(file_to_upload, remote_path)
sftp.close()
client.close()
exit(0)
except Exception, e:
sys.stderr.write(e.message)
sys.stderr.flush()
exit(1)
#!/usr/bin/env bash
# -------------------------------------------------------------------------------
# Filename: java_deploy.sh
# Revision: 1.0
# Date: 2016/09
# Author: Xiaolin.zhu
# Description: 该脚本根据git的分支名称(branch name)导出(checkout)不同的分支。
# Usage:used by ../deploy/*_deploy.sh
# -------------------------------------------------------------------------------
branch_name=$1
profile=test
if [ -z ${branch_name} ]; then
echo "checkout default branch master"
git pull
else
echo "checkout specified branch $1"
which git
git checkout ${branch_name}
if [ $? = 0 ]; then
echo "checkout branch $1 is ok".
git pull
else
echo "Fail to checkout branch $1".
exit -1
fi
fi
# -------------------------------------------------------------------------------
# Filename: java_deploy.sh
# Revision: 1.0
# Date: 2016/09
# Author: Xiaolin.zhu
# Description: 该脚本负责build java项目。
# Usage:used by ../deploy/java_deploy.sh
# -------------------------------------------------------------------------------
source /etc/profile
config_profile=$1
module=$2
host=$3
close_captcha=$4
echo $close_captcha
if [[ "${host}" = "192.168.10.2" ]]
then
suffix=''
echo "skip get suffix"
else
suffix=$((${host:10}+1))
echo $host $suffix
fi
if [ -z $config_profile ]; then
echo "Does not set config profile, use the default value: test"
${config_profile}=test
else
echo "use specified profile $config_profile"
fi
if [[ "$module" = "han-gu-guan" ]] && $close_captcha; then
echo "关闭验证码"
num=`grep -n "Boolean validCaptcha" src/main/java/cn/quantgroup/xyqb/aspect/captcha/CaptchaValidateAdvisor.java|awk -F ':' '{print $1}'`
sed -i "${num}s/false/true/" src/main/java/cn/quantgroup/xyqb/aspect/captcha/CaptchaValidateAdvisor.java
num1=`expr ${num} + 1`
num6=`expr ${num} + 7`
echo "注释掉第${num1}行到${num6}行"
sed -i "${num1}i/*" src/main/java/cn/quantgroup/xyqb/aspect/captcha/CaptchaValidateAdvisor.java
sed -i "${num6}i*/" src/main/java/cn/quantgroup/xyqb/aspect/captcha/CaptchaValidateAdvisor.java
fi
if [[ "$module" = "xyqb" || "$module" = "pay-center" || "$module" = "han-gu-guan" || "$module" = "di-ting" || "$module" = "xyqb-offline" || "$module" = "xyqb-user" ]]; then
echo "module is ${module}, need replace sms jar version from 1.0.x to 1.0.2"
num=`grep -n -A12 "<id>test</id>" pom.xml| grep "<version>" | awk -F- '{print $1}'`
if [[ "$host" = "192.168.10.2" ]]; then
sed -i ''$num's/1.0.[0-9]-SNAPSHOT/1.0.2-SNAPSHOT/' pom.xml
else
sed -i "${num}s/1.0.[0-9]-SNAPSHOT/1.0.6-SNAPSHOT/" pom.xml
fi
fi
if [[ "$module" = "du-jiang-yan" ]]; then
num=`grep -n -A3 "<artifactId>fund-manage-sdk</artifactId>" pom.xml| grep "<version>" | awk -F- '{print $1}'`
sed -i "${num}s/1.0.[0-9]-SNAPSHOT/1.0.0.${suffix}-SNAPSHOT/" pom.xml
sed -i "${num}s/1.0.[0-9].[0-9]/1.0.0.${suffix}-SNAPSHOT/" pom.xml
fi
echo "mvn clean package -P${config_profile} -Dmaven.test.skip=true"
mvn clean package -P${config_profile} -Dmaven.test.skip=true -X
mkdir -p /home/quant_group/deploy_backup
\cp -f target/*.jar /home/quant_group/deploy_backup/
exit $?
# -------------------------------------------------------------------------------
# Filename: java_deploy.sh
# Revision: 1.0
# Date: 2016/09
# Author: Xiaolin.zhu
# Description: 该脚本负责build UI项目。
# Usage:used by ../deploy/ui_deploy.sh
# -------------------------------------------------------------------------------
source ~/.bash_profile
module_name=$1
npm_install=$2
ui_sys_type=$3
bower_install=false
build_cmd="npm run build"
conf_file=src/js/config.env.js
# xyqb-ui do bower install --allow-root 需要手动选择版本号
# 所有的“系统”,如:谛听,财务等,都需要bower install
if [[ "${ui_sys_type}" = "management_sys" ]]; then
bower_install=true
if [[ "${module_name}" = "di-ting-ui" ]]; then
conf_file=client/app/config.js
build_cmd="grunt build"
else
conf_file=src/js/env.config.js
build_cmd="npm run build"
fi
elif [[ "${ui_sys_type}" = "business_sys" ]]; then
if [[ "${module_name}" = "xyqb-ui" ]]; then
bower_install=true
conf_file=client/app/config.js
build_cmd="grunt build"
elif [[ "${module_name}" = "qgbc-ui" ]]; then
bower_install=false
conf_file=src/app/config/env.config.js
build_cmd="npm run build_production"
elif [[ "${module_name}" = "spider-center-ui" ]]; then
bower_install=false
conf_file=src/app/config/env.config.js
build_cmd="npm run qa"
elif [[ "${module_name}" = "xyqb-user-ui" ]]; then
bower_install=false
conf_file=src/app/config.js
build_cmd="npm run qa"
elif [[ "${module_name}" = "activity-ui" ]]; then
# vue2.0 will use the same config of activity-ui
bower_install=false
conf_file=src/app/config.js
build_cmd="npm run build"
else
bower_install=false
conf_file=src/app/config/env.config.js
build_cmd="npm run build"
fi
else
echo "Error! Please config ui_sys_type: business_sys or management_sys."
fi
echo "module_name is ${module_name}"
ts=`date +%s`
echo "curl http://oeazjz3gi.bkt.clouddn.com/qa.${module_name}.config.js?random=${ts} -o new.config.js"
curl http://oeazjz3gi.bkt.clouddn.com/qa.${module_name}.config.js?random=${ts} -o new.config.js
if [ $? = 0 ]; then
echo "get config file is ok."
else
echo "Error: Fail to get config file."
exit -1
fi
mv -f new.config.js $conf_file
if [ "$npm_install" = true ]; then
echo "npm_install is ${npm_install}"
npm install
if [ $? = 0 ]; then
echo npm package ok!
else
echo npm package have something wrong !!!!!!!!
exit -1
fi
if [[ "$bower_install" = true ]]; then
echo "bower_install is ${bower_install}"
bower -v
bower install --allow-root
fi
else
echo "skip npm install"
fi
echo "use $build_cmd to build ui"
$build_cmd
echo "Create tgz package"
tar cfz ./${module_name}_dist.tar.gz ./dist
if [ $? = 0 ]; then
echo "tar package ok!"
else
echo "Error: fail to tar package."
exit -1
fi
echo "mkdir -p /home/quant_group/deploy_backup"
mkdir -p /home/quant_group/deploy_backup
echo "rm -f /home/quant_group/deploy_backup/${module_name}_dist.tar.gz"
rm -f /home/quant_group/deploy_backup/${module_name}_dist.tar.gz
echo "cp ${module_name}_dist.tar.gz /home/quant_group/deploy_backup/"
cp ${module_name}_dist.tar.gz /home/quant_group/deploy_backup/
exit $?
# -------------------------------------------------------------------------------
# Filename: java_deploy.sh
# Revision: 1.0
# Date: 2016/09
# Author: Xiaolin.zhu
# Description: 该脚本远程copy ui,js, 和java项目。
# Usage:used by ../deploy/*_deploy.sh
# -------------------------------------------------------------------------------
module_name=$1
target_host=$2
module_type=$3
if [[ "${module_name}" = "han-gu-guan" ]]
then
package_name="xyqb-openauth-0.0.1-SNAPSHOT.jar"
elif [[ "${module_name}" = "di-ting" ]]
then
package_name="xyqb-di_ting-0.0.1-SNAPSHOT.jar"
elif [[ "${module_name}" = "jian-men-guan" ]]
then
package_name="risk-control-auth-1.0-SNAPSHOT.jar"
elif [[ "${module_name}" = "du-jiang-yan" ]]
then
package_name="du-jiang-yan-1.0-SNAPSHOT.jar"
elif [[ "${module_name}" = "financial-system" ]]
then
package_name="xyqb-financial_system-0.0.1-SNAPSHOT.jar"
elif [[ "${module_name}" = "mall" ]]
then
package_name="xyqb-mall-0.0.1-SNAPSHOT.jar"
elif [[ "${module_name}" = "quartz" ]]
then
package_name="xyqb-quartz-0.0.1-SNAPSHOT.jar"
elif [[ "${module_name}" = "xyqb-user" ]]
then
package_name="xyqb-user2-0.0.1-SNAPSHOT.jar"
elif [[ "${module_name}" = "red-packet" ]]
then
package_name="redpacket-0.0.1-SNAPSHOT.jar"
else
if [[ "${module_type}" = "java" ]]
then
package_name="${module_name}-0.0.1-SNAPSHOT.jar"
elif [[ "${module_type}" = "ui" ]]
then
package_name="${module_name}_dist.tar.gz"
else
echo "ERROR: module type: ${module_type} does not exist!"
exit -1
fi
fi
echo "copy module: ${package_name} to host: $target_host"
scp /home/quant_group/deploy_backup/${package_name} root@${target_host}:/home/quant_group/deploy_backup/
echo "ssh root@${target_host} mkdir -p /home/quant_group/${module_name}"
ssh root@${target_host} mkdir -p /home/quant_group/${module_name}
echo "ssh root@${target_host} cp /home/quant_group/deploy_backup/${package_name} /home/quant_group/${module_name}/"
ssh root@${target_host} cp /home/quant_group/deploy_backup/${package_name} /home/quant_group/${module_name}/
# -------------------------------------------------------------------------------
# Filename: java_deploy.sh
# Revision: 1.0
# Date: 2016/09
# Author: Xiaolin.zhu
# Description: 该脚本通过远程调用工作机器的脚本,来实现java项目的start和stop。
# Usage:used by ../deploy/java_deploy.sh
# -------------------------------------------------------------------------------
echo "java_restart.sh parameter: module_name: ${1}, host: ${2}, re_load_config: ${3}"
module_name=$1
host=$2
re_load_config=$3
use_pulic_ip=$4
port=22
user="root"
password="!QAZ2wsx"
package_path="/home/quant_group/${module_name}"
shutils_path="/home/quant_group/test-utils/sh-utils"
ack_phrase="Started\ Bootstrap"
max_wait_log_generate_time=50
max_wait_ack_time=500
if [[ "${module_name}" = "di-ting" ]]
then
log_path=/home/quant_group/logs/di_ting.log
elif [[ "${module_name}" = "jian-men-guan" ]]
then
log_path=/home/quant_group/logs/jian_men_guan.log
elif [[ "${module_name}" = "du-jiang-yan" ]]
then
log_path=/home/quant_group/logs/du_jiang_yan.log
elif [[ "${module_name}" = "financial-system" ]]
then
log_path=/home/quant_group/logs/financial_system.log
elif [[ "${module_name}" = "xyqb-offline" ]]
then
log_path=/home/quant_group/logs/xyqb_offline.log
elif [[ "${module_name}" = "red-packet" ]]
then
log_path=/home/quant_group/logs/redpacket.log
elif [[ "${module_name}" = "fund-manage" ]]
then
log_path=/home/quant_group/logs/fund_manage.log
elif [[ "${module_name}" = "cash-loan-flow" ]]
then
log_path=/home/quant_group/logs/cash_loan_flow.log
elif [[ "${module_name}" = "xyqb-user" ]]
then
log_path=/home/quant_group/logs/xyqb_user.log
else
log_path=/home/quant_group/logs/${module_name}.log
fi
echo "Step 4.1 stop java"
ssh root@${host} sh ${shutils_path}/worker/java_stop.sh ${module_name}
sleep 5
if [ $? -ne 0 ]
then
echo "Fail to stop"
fi
timestamp_log=`date +%Y-%m-%d.%H%M%S`
echo "Step 4.2 backup log"
ssh root@${host} mv ${log_path} ${log_path}.${timestamp_log}
echo "Step 4.3 start java"
ssh root@${host} sh ${shutils_path}/worker/java_start.sh ${module_name} $host "${re_load_config}" "${use_pulic_ip}"
if [ $? -ne 0 ]
then
echo "Fail to start"
fi
echo "Step 4.4 check logs:waiting for ${ack_phrase}"
ssh root@${host} sh ${shutils_path}/worker/log_check.sh "${ack_phrase}" ${log_path} ${max_wait_log_generate_time} ${max_wait_ack_time}
#!/bin/sh
jenkins_host=192.168.192.191
target_host=$1
function copy_to()
{
module=$1
scp /home/quant_group/jenkins/workspace/update_test-config-manager/${module}.${target_host}.tgz root@${target_host}:/home/quant_group/deploy_backup/${module}/
scp /home/quant_group/jenkins/workspace/build_${module}/target/*.jar root@${target_host}:/home/quant_group/deploy_backup/${module}/
}
if [[ "${module_name}" = "ALL" ]]
then
modules='di-ting du-jiang-yan han-gu-guan jian-men-guan mall pay-center quartz xyqb'
for module in $modules
do
copy_to ${module}
echo ${module}
done
elif [[ "${module_name}" = "" ]]
then
echo 'Fail module name is empty'
exit -1
else
copy_to ${module_name}
echo ${module_name}
fi
\ No newline at end of file
#!/bin/sh
module_name=$1
target_host=$2
jenkins_host=192.168.192.191
target_host=$target_host
function copy_to()
{
module=$1
module_path=/home/quant_group/jenkins/workspace/build_${module}/dist.tar.gz
if [[ -f ${module_path} ]]
then
scp /home/quant_group/jenkins/workspace/build_${module}/dist.tar.gz root@${target_host}:/home/quant_group/deploy_backup/${module}/
else
echo '${module}/dist.tar.gz does not exit'
exit -1
fi
}
if [[ "${module_name}" = "ALL" ]]
then
modules='di-ting-ui xyqb-ui pay-center-ui'
for module in $modules
do
copy_to ${module}
echo ${module}
done
elif [[ "${module_name}" = "" ]]
then
echo 'Fail module name is empty'
exit -1
else
copy_to ${module_name}
echo ${module_name}
fi
\ No newline at end of file
#!/bin/sh
jenkins_host=192.168.192.191
target_host=$target_host
module_name=test-utils
mkdir -p /home/quant_group/deploy_backup
backup_path=/home/quant_group/deploy_backup
echo job name is ${module_name}
if [ -f ${backup_path}/${module_name}.tar.gz ]
then
rm ${backup_path}/${module_name}.tar.gz
fi
#
echo tar cfz ${backup_path}/${module_name}.tar.gz ../${JOB_NAME}
tar cfz ${backup_path}/${module_name}.tar.gz ../${JOB_NAME}
if [ -f ${backup_path}/${JOB_NAME} ]
then
rm -rf ${backup_path}/${JOB_NAME}
fi
tar zxf ${backup_path}/${JOB_NAME}.tar.gz -C ${backup_path}/${JOB_NAME}
function copy_to()
{
host=$1
scp /home/quant_group/deploy_backup/${module_name}.tar.gz root@${host}:/home/quant_group/deploy_backup/
}
if [[ "${target_host}" = "ALL" ]]
then
hosts='di-ting du-jiang-yan han-gu-guan jian-men-guan mall pay-center quartz xyqb'
for host in $hosts
do
copy_to ${host}
echo ${host}
done
elif [[ "${target_host}" = "" ]]
then
echo 'Fail module name is empty'
exit -1
else
copy_to ${target_host}
echo ${target_host}
fi
\ No newline at end of file
#!/bin/sh
# -------------------------------------------------------------------------------
# Filename: database_backup.sh
# Revision: 1.0
# Date: 2016/09
# Author: Xiaolin.zhu
# Description: 该脚本从线上从库备份数据库。
# Usage:used by ../deploy/database_sync.sh
# -------------------------------------------------------------------------------
source ~/.bash_profile
database_name=$1
user_name='xyqb_query'
password='Uiwb@o^fR&nHOa5t'
host='192.168.4.253'
db_backup=$2
date_str=`date "+%Y-%m-%d-%H"`
backfilename=${database_name}_back_${date_str}.sql
ingore_tables_str=''
mkdir -p $db_backup
if [[ $database_name = 'xyqb' ]]; then
# 信用钱包database
# repay v_manifest v_repay 是view类型的
# secure_proxy 表里面的数据需要被同步
sys_table_list='baitiao_merchant baitiao_secure_key channel funding_contract funding_corp loan_product merchant_channel payeco_return_url_info red_packet t_phonenum zmxy_return_url configuration repay v_manifest v_repay secure_proxy'
port='3306'
elif [[ $database_name = 'xyqb_app' ]]; then
# app-backend使用的数据库
sys_table_list='activities app_banners app_config app_versions banners blanknote_entries credit_questions hot_games loan_banners loan_questions migrations sharings widgets'
port='3307'
elif [[ $database_name = 'payment_center' ]]; then
# 支付中心
sys_table_list='card_switcher merchant merchant_config pay_approach_config'
port='3308'
elif [[ $database_name = 'risk_control' ]]; then
# 谛听database
sys_table_list='company product_strategy_dispatcher quantify_product red_packet_info socketio_init_parameters user'
port='3309'
elif [[ $database_name = 'dujiangyan' ]]; then
# dujiangyan
sys_table_list='baitiao_secure_key external_coopr'
port='3310'
elif [[ $database_name = 'mall' ]]; then
# 白条商城
sys_table_list='activity_3c_product ad_detail new_3c_product supplier 3c_product 3c_product_spec apix_phone_recharge_detail apix_recharge_project apix_recharge_project_bak category configuration course_detail_info course_info merchant pay19_recharge_project product'
port='3310'
elif [[ $database_name = 'qinqiong' ]]; then
# qinqiong
sys_table_list='secure_key secure_proxy'
port='3310'
elif [[ $database_name = 'quartz' ]]; then
# 定时任务
sys_table_list='certain_time_job'
port='3310'
elif [[ $database_name = 'contract' ]]; then
# 合同
sys_table_list=''
port='3311'
elif [[ $database_name = 'financial_system' ]]; then
# 财务系统
sys_table_list='collection_user sys_dictionary sys_status_edge sys_status_transfer_data_record sys_status_transfer_record sys_status_vertice'
port='3311'
elif [[ $database_name = 'gyxd' ]]; then
# 广源小贷系统
sys_table_list='collection_user sys_dictionary sys_status_edge sys_status_transfer_data_record sys_status_transfer_record sys_status_vertice'
port='3311'
elif [[ $database_name = 'offline' ]]; then
# 线下白条
sys_table_list='goods_detail merchant operator_user'
port='3311'
elif [[ $database_name = 'sms-center' ]]; then
# 短信中心
sys_table_list='current_index merchant merchant_config sms_content sms_platform'
port='3311'
elif [[ $database_name = 'spider_center' ]]; then
# 授信中心
sys_table_list='merchant merchant_config'
port='3312'
elif [[ $database_name = 'xyqb_user' ]]; then
# 用户中心
sys_table_list='merchant merchant_config'
port='3312'
fi
if [ ! -f "$backfilename" ]; then
echo "$backfilename does not exit, skip remove $backfilename"
else
echo "rm -f $backfilename"
rm -f $backfilename
fi
for table_name in $sys_table_list
do
if [[ $table_name = 'repay' || $table_name = 'v_manifest' || $table_name = 'v_repay' ]]; then
echo "skip view table $table_name"
else
mysqldump -u${user_name} -p${password} -h${host} -P${port} --skip-lock-tables --databases $database_name --tables $table_name >> ${db_backup}/${backfilename}
fi
ingore_tables_str+=" --ignore-table=${database_name}.${table_name}"
done
echo $ingore_tables_str
echo "mysqldump -u${user_name} -p${password} -h${host} -P${port} --databases $database_name --no-data $ingore_tables_str >> $backfilename"
mysqldump -u${user_name} -p${password} -h${host} -P${port} --skip-lock-tables --databases $database_name --no-data $ingore_tables_str --skip-add-locks >> ${db_backup}/${backfilename}
\cp -f ${db_backup}/${backfilename} ${db_backup}/${database_name}_latest.sql
# -------------------------------------------------------------------------------
# Filename: database_replace_ip.sh
# Revision: 1.0
# Date: 2016/09
# Author: Xiaolin.zhu
# Description: sync数据库。
# Usage:used by ../deploy/database_sync.sh
# -------------------------------------------------------------------------------
database_name=$1
mysql_host=$2
db_backup=$3
if [ ! -f ${db_backup}/${database_name}_${mysql_host}.sql ]; then
echo "ERROR: skip import DB, because ${database_name}_${mysql_host}.sql does not exit!"
exit -1
else
cd $db_backup
if [[ "${database_name}" = "sms-center" ]]
then
echo "DROP DATABASE \`sms-center\` " > ${database_name}_drop.sql
echo "CREATE DATABASE IF NOT EXISTS \`sms-center\` DEFAULT CHARSET utf8 COLLATE utf8_general_ci;" > ${database_name}_create.sql
else
echo "DROP DATABASE ${database_name}" > ${database_name}_drop.sql
echo "CREATE DATABASE IF NOT EXISTS ${database_name} DEFAULT CHARSET utf8 COLLATE utf8_general_ci;" > ${database_name}_create.sql
fi
echo "mysql -h $mysql_host -u qa -pqatest $database_name < ${database_name}_drop.sql"
mysql -h $mysql_host -u qa -pqatest $database_name < ${database_name}_drop.sql
echo "mysql -h $mysql_host -u qa -pqatest < ${database_name}_create.sql"
mysql -h $mysql_host -u qa -pqatest < ${database_name}_create.sql
echo "mysql -h $mysql_host -u qa -pqatest $database_name < ${database_name}_${mysql_host}.sql"
mysql -h $mysql_host -u qa -pqatest $database_name < ${database_name}_${mysql_host}.sql
fi
# -------------------------------------------------------------------------------
# Filename: database_replace_ip.sh
# Revision: 1.0
# Date: 2016/09
# Author: Xiaolin.zhu
# Description: 该脚本根据备份sql称特定环境使用的sql,例如:xyqb_192.168.4.3。
# Usage:used by ../deploy/database_sync.sh
# -------------------------------------------------------------------------------
database_name=$1
mysql_host=$2
prefix=$((${mysql_host:10}-2))
server_host=192.168.4.${prefix}
db_backup=$3
use_public_ip=$4
public_ip="139.198.2.95"
echo $server_host
cd $db_backup
cp ${database_name}_latest.sql ${database_name}_${mysql_host}.sql
# mac
# sed -i '' "s/http\:\/\/m.xyqb.com/http\:\/\/${server_host}:7001/g" ${database_name}_${mysql_host}.sql
# sed -i '' "s/http\:\/\/bt.xyqb.com/http\:\/\/${server_host}:7002/g" ${database_name}_${mysql_host}.sql
# sed -i '' "s/http\:\/\/api.xyqb.com/http\:\/\/${server_host}:7003/g" ${database_name}_${mysql_host}.sql
# sed -i '' "s/http\:\/\/r.xyqb.com/http\:\/\/${server_host}:7004/g" ${database_name}_${mysql_host}.sql
# sed -i '' "s/http\:\/\/rapi.xyqb.com/http\:\/\/${server_host}:7005/g" ${database_name}_${mysql_host}.sql
# sed -i '' "s/http\:\/\/payapi.xyqb.com/http\:\/\/${server_host}:7006/g" ${database_name}_${mysql_host}.sql
# sed -i '' "s/http\:\/\/pay.xyqb.com/http\:\/\/${server_host}:7007/g" ${database_name}_${mysql_host}.sql
# sed -i '' "s/http\:\/\/off.xyqb.com/http\:\/\/${server_host}:7008/g" ${database_name}_${mysql_host}.sql
# sed -i '' "s/http\:\/\/offapi.xyqb.com/http\:\/\/${server_host}:7010/g" ${database_name}_${mysql_host}.sql
# sed -i '' "s/http\:\/\/financial.xyqb.com/http\:\/\/${server_host}:7011/g" ${database_name}_${mysql_host}.sql
# sed -i '' "s/http\:\/\/fsapi.xyqb.com/http\:\/\/${server_host}:7012/g" ${database_name}_${mysql_host}.sql
# sed -i '' "s/http\:\/\/auth.xyqb.com/http\:\/\/${server_host}:7013/g" ${database_name}_${mysql_host}.sql
# sed -i '' "s/http\:\/\/qapi.xyqb.com/http\:\/\/${server_host}:7014/g" ${database_name}_${mysql_host}.sql
# sed -i '' "s/http\:\/\/mallapi.xyqb.com/http\:\/\/${server_host}:7019/g" ${database_name}_${mysql_host}.sql
# linux
sed -i "s/http\:\/\/m.xyqb.com/http\:\/\/${server_host}:7001/g" ${database_name}_${mysql_host}.sql
sed -i "s/http\:\/\/bt.xyqb.com/http\:\/\/${server_host}:7002/g" ${database_name}_${mysql_host}.sql
sed -i "s/http\:\/\/api.xyqb.com/http\:\/\/${server_host}:7003/g" ${database_name}_${mysql_host}.sql
sed -i "s/http\:\/\/r.xyqb.com/http\:\/\/${server_host}:7004/g" ${database_name}_${mysql_host}.sql
sed -i "s/http\:\/\/rapi.xyqb.com/http\:\/\/${server_host}:7005/g" ${database_name}_${mysql_host}.sql
sed -i "s/http\:\/\/payapi.xyqb.com/http\:\/\/${server_host}:7006/g" ${database_name}_${mysql_host}.sql
sed -i "s/http\:\/\/pay.xyqb.com/http\:\/\/${server_host}:7007/g" ${database_name}_${mysql_host}.sql
sed -i "s/http\:\/\/off.xyqb.com/http\:\/\/${server_host}:7008/g" ${database_name}_${mysql_host}.sql
sed -i "s/http\:\/\/offapi.xyqb.com/http\:\/\/${server_host}:7010/g" ${database_name}_${mysql_host}.sql
sed -i "s/http\:\/\/financial.xyqb.com/http\:\/\/${server_host}:7011/g" ${database_name}_${mysql_host}.sql
sed -i "s/http\:\/\/fsapi.xyqb.com/http\:\/\/${server_host}:7012/g" ${database_name}_${mysql_host}.sql
sed -i "s/http\:\/\/auth.xyqb.com/http\:\/\/${server_host}:7013/g" ${database_name}_${mysql_host}.sql
sed -i "s/http\:\/\/qapi.xyqb.com/http\:\/\/${server_host}:7014/g" ${database_name}_${mysql_host}.sql
sed -i "s/http\:\/\/mallapi.xyqb.com/http\:\/\/${server_host}:7019/g" ${database_name}_${mysql_host}.sql
if [[ "${use_public_ip}" = true ]]; then
echo "replace private ip to public ip"
if [ $prefix -lt 100 ]; then
echo "prefix < 100, ${prefix}"
sed -i "s/${server_host}:7/${public_ip}:${prefix}/g" ${database_name}_${mysql_host}.sql
else
echo "prefix >= 100, ${prefix}"
sed -i "s/${server_host}:70/${public_ip}:${prefix}/g" ${database_name}_${mysql_host}.sql
fi
else
echo "use_public_ip is false, skip replace ip to public ip."
fi
#!/usr/bin/env bash
server_host=$1
# server_host=172.16.10.1
# module_name=xyqb
module_name=$2
public_host=139.198.2.239
basic_host=172.16.10.2
mysql_host=172.16.10.5
cd /home/quant_group/jenkins/workspace/update_test-config-manager/
rm -rf ${module_name}.${server_host}
cp -rf ${module_name} ${module_name}.${server_host}
cd ${module_name}.${server_host}
# 替换mysql数据库账户
sed -i "s/192.168.192.191/${mysql_host}/g" *.properties
sed -i "s/spring.datasource.username=root/spring.datasource.username=quantgroup/g" *.properties
sed -i "s/spring.datasource.password=qatest/spring.datasource.password=quaNtGroup2011/g" *.properties
# 替换redis数据库账户
sed -i "s/redis.master.host=192.168.192.206/redis.master.host=${basic_host}/g" *.properties
sed -i "s/redis.master.port=6370/redis.master.port=6371/g" *.properties
# 替换rabbitmq账户
sed -i "s/rabbitmq.connection.host=192.168.192.243/rabbitmq.connection.host=${basic_host}/g" *.properties
sed -i "s/rabbitmq.connection.port=5672/rabbitmq.connection.port=5671/g" *.properties
sed -i "s/rabbitmq.connection.user=rabbit_admin/rabbitmq.connection.user=qa/g" *.properties
sed -i "s/rabbitmq.connection.password=abc1234/rabbitmq.connection.password=qatest/g" *.properties
sed -i "s/192.168.192.190/${server_host}/g" *.properties
sed -i "s/61.50.125.14/${public_host}/g" *.properties
cd ..
rm -rf ${module_name}.${server_host}.tgz
tar zcf ${module_name}.${server_host}.tgz ${module_name}.${server_host}
\ No newline at end of file
#!/bin/sh
mkdir -p /home/quant_group/deploy_backup
function clean_backup()
{
module=$1
mkdir -p /home/quant_group/deploy_backup/${module}
echo cd /home/quant_group/deploy_backup/${module}
cd /home/quant_group/deploy_backup/${module}
rm -rf *
}
if [[ "${module_name}" = "ALL" ]]
then
modules='di-ting du-jiang-yan han-gu-guan jian-men-guan mall pay-center quartz xyqb'
for module in $modules
do
clean_backup ${module}
echo ${module}
done
elif [[ "${module_name}" = "" ]]
then
echo 'Fail module name is empty'
exit -1
else
clean_backup ${module_name}
echo ${module_name}
fi
\ No newline at end of file
#!/usr/bin/env bash
# -------------------------------------------------------------------------------
# Filename: database_sync.sh
# Revision: 1.0
# Date: 2016/09
# Author: Xiaolin.zhu
# Description: 该脚本调用其他脚本实现测试数据库的同步
# -------------------------------------------------------------------------------
source ~/.bash_profile
echo "部署参数:database_name: $1, mysql_host: $2, re_dumpDB?: $3, re_replace_ip?: $4, re_importDB?$5"
database_name=$1
mysql_host=$2
re_dumpDB=$3
re_replace_ip=$4
re_importDB=$5
use_public_ip =$6
work_path=/home/quant_group
# work_path=/Users/eileen/QG/dev
db_backup=$work_path/db_backup
utils_path=$work_path/test-utils
function database_ops()
{
database=$1
echo $database
if [ "$re_dumpDB" = true ]; then
echo "Step 1: dumpDB: $database"
sh ${utils_path}/sh-utils/center/database_backup.sh $database $db_backup
else
echo "Step 1: skip dumpDB"
fi
if [ "$re_replace_ip" = true ]; then
echo "Step 2: replace domain name in tables: $database $mysql_host"
sh ${utils_path}/sh-utils/center/database_replace_ip.sh $database $mysql_host $db_backup "${use_public_ip}"
else
echo "Step 2: skip replace_ip"
fi
if [ "$re_importDB" = true ]; then
echo "Step 3: importDB: $database $mysql_host"
sh ${utils_path}/sh-utils/center/database_import.sh $database $mysql_host $db_backup
else
echo "Step 3: skip importDB"
fi
}
database_list='xyqb_user xyqb xyqb_app payment_center risk_control dujiangyan mall qinqiong quartz contract financial_system gyxd offline sms-center spider_center'
if [[ "${database_name}" = "all" ]]
then
echo "all database"
for database in $database_list
do
database_ops $database
echo $database
done
else
database_ops $database_name
fi
#!/usr/bin/env bash
# -------------------------------------------------------------------------------
# Filename: java_deploy.sh
# Revision: 1.0
# Date: 2016/09
# Author: Xiaolin.zhu
# Description: 该脚本调用其他脚本实现java项目的自动化部署。deploy_xyqb,deploy_di-ting等jenkins job使用了该脚本。
# -------------------------------------------------------------------------------
source ~/.bash_profile
echo "部署参数-1:module name: $1, branch name: $2, host address: $3. "
echo "部署参数-2:checkout branch again?$4, build java again? $5, remote copy again?$6,restart java project? $7, reload configure file? $8."
echo "部署参数-3: allow Picture verification code? ${10}"
module=$1
branch_name=$2
host=$3
checkout_branch=$4
build_java=$5
remote_copy=$6
restart_java=$7
re_load_config=$8
use_pulic_ip=$9
profile=test
close_captcha=${10}
utils_path=/home/quant_group/test-utils
if [ "$checkout_branch" = true ]; then
echo "Step 1: checkout branch: $branch_name"
sh ${utils_path}/sh-utils/center/1_branch_checkout.sh $branch_name
else
echo "Step 1: skip checkout branch: $branch_name"
fi
if [ "$build_java" = true ]; then
echo "Step 2: build project: $branch_name"
sh ${utils_path}/sh-utils/center/2_build_java.sh $profile $module $host $close_captcha
else
echo "Step 2: skip build project: $branch_name"
fi
if [ "$remote_copy" = true ]; then
echo "Step 3: remote copy project: "
sh ${utils_path}/sh-utils/center/3_remote_copy.sh $module $host java
else
echo "Step 3: skip remote copy project"
fi
if [ "$restart_java" = true ]; then
echo "Step 4: restart project: "
sh ${utils_path}/sh-utils/center/4_java_restart.sh $module $host "${re_load_config}" "${use_pulic_ip}"
else
echo "Step 4: skip restart project"
fi
#!/usr/bin/env bash
# -------------------------------------------------------------------------------
# Filename: multiple_deploy.sh
# Revision: 1.0
# Date: 2016/09
# Author: Xiaolin.zhu
# Description: 该脚本调用其他脚本实现java项目的自动化部署。deploy_xyqb,deploy_di-ting等jenkins job使用了该脚本。
# -------------------------------------------------------------------------------
source ~/.bash_profile
module_type=$1
target_host=$2
use_public_ip=$3
utils_path=/home/quant_group/test-utils
java_module_list='black-hole di-ting du-jiang-yan financial-system gyxd han-gu-guan jian-men-guan mall pay-center quartz spider-center xyqb xyqb-offline'
if [[ "${module_type}" = "java" ]]
then
echo "deploy all java modules"
for module in $java_module_list
do
if [[ "${module}" = "mall" ]]; then
project_name='xyqb-mall'
elif [[ "${module}" = "pay-center" ]]; then
project_name='gu-bei'
else
project_name=${module}
fi
git clone http://gitabc.xyqb.com/QG/${project_name}.git
cd $project_name
# xyqb $branch_name $target_host $re_checkout $re_build $re_scp $re_start $re_load_config
sh ${utils_path}/sh-utils/deploy/java_deploy.sh $module master $target_host true true true true true "${use_public_ip}"
done
elif [[ "${module_type}" = "ui" ]]; then
echo "deploy all ui modules"
for module in $ui_module_list
do
# xyqb $branch_name $target_host $re_checkout $re_build $re_scp $re_start $re_load_config
sh ${utils_path}/sh-utils/deploy/ui_deploy.sh $module master $target_host true true true true true
done
elif [[ "${module_type}" = "python" ]]; then
echo "deploy all python modules"
for module in $python_module_list
do
# xyqb $branch_name $target_host $re_checkout $re_build $re_scp $re_start $re_load_config
sh ${utils_path}/sh-utils/deploy/other_deploy.sh $module master $target_host true true true true true
done
elif [[ "${module_type}" = "js" ]]; then
echo "deploy all js modules"
for module in $python_module_list
do
# xyqb $branch_name $target_host $re_checkout $re_build $re_scp $re_start $re_load_config
sh ${utils_path}/sh-utils/deploy/other_deploy.sh $module master $target_host true true true true true
done
fi
#!/usr/bin/env bash
# -------------------------------------------------------------------------------
# Filename: java_deploy.sh
# Revision: 1.0
# Date: 2016/09
# Author: Xiaolin.zhu
# Description: 该脚本调用其他脚本实现js项目的自动化部署。目前只有deploy_app-backend jenkins job使用了该脚本。
# -------------------------------------------------------------------------------
source ~/.bash_profile
repo_url=$1
module_name=$2
branch_name=$3
target_host=$4
checkout_branch=$5
remote_copy=$6
restart=$7
re_load_config=$8
work_path=/home/quant_group
backup_path=/home/quant_group/remote_backup
utils_path=/home/quant_group/test-utils
echo "job name is ${JOB_NAME}"
if [ "$checkout_branch" = true ]; then
echo "Step 2: checkout branch: $branch_name"
if [ -d ${module_name} ]
then
echo "Step 2.2: rm -rf ${module_name}"
rm -rf ${module_name}
fi
echo "Step 2.3: git clone $repo_url"
git clone $repo_url
cd $module_name
sh ${utils_path}/sh-utils/center/1_branch_checkout.sh $branch_name
else
echo "Step 2: skip checkout branch: $branch_name"
fi
if [ "$remote_copy" = true ]; then
echo "Step 3: remote copy project"
cd ..
mkdir -p ${backup_path}
if [ -f ${backup_path}/${module_name}.tar.gz ]
then
echo "Step 3.1: rm -f ${backup_path}/${module_name}.tar.gz"
rm -f ${backup_path}/${module_name}.tar.gz
fi
echo "Step 3.3: tar cfz ${backup_path}/${module_name}.tar.gz ${module_name}"
tar cfz ${backup_path}/${module_name}.tar.gz ${module_name}
echo "Step 3.4: remote copy"
scp ${backup_path}/${module_name}.tar.gz root@${target_host}:/home/quant_group/remote_backup/
else
echo "Step 3: skip remote copy project: ${module_name}.tar.gz"
fi
if [ "$restart" = true ]; then
echo "Step 4: restart"
ssh root@${target_host} sh ${utils_path}/sh-utils/worker/other_restart.sh ${module_name} $target_host $re_load_config
else
echo "Step 4: skip restart"
fi
#!/usr/bin/env bash
# -------------------------------------------------------------------------------
# Filename: java_deploy.sh
# Revision: 1.0
# Date: 2016/09
# Author: Xiaolin.zhu
# Description: 该脚本调用其他脚本实现js项目的自动化部署。目前deploy_xyqb-ui,deploy_di-ting-ui等 jenkins job使用了该脚本。
# -------------------------------------------------------------------------------
source ~/.bash_profile
echo "部署参数:module name: $1, branch name: $2, host address: $3, checkout branch again?$4, build UI again? $5, npm and bower install? $6, remote copy again?$7"
module=$1
branch_name=$2
host=$3
checkout_branch=$4
build_ui=$5
npm_install=$6
remote_copy=$7
if [ -z $8 ]; then
ui_sys_type="business_sys"
else
ui_sys_type=$8
fi
use_public_ip=$9
replace=true
utils_path=/home/quant_group/test-utils
if [ "$checkout_branch" = true ]; then
echo "Step 1: checkout branch: $branch_name"
sh ${utils_path}/sh-utils/center/1_branch_checkout.sh $branch_name
else
echo "Step 1: skip checkout branch: $branch_name"
fi
if [ "$build_ui" = true ]; then
echo "Step 2: build project: $branch_name"
sh ${utils_path}/sh-utils/center/2_build_ui.sh $module $npm_install $ui_sys_type
else
echo "Step 2: skip build project: $branch_name"
fi
if [ "$remote_copy" = true ]; then
echo "Step 3: remote copy project. "
sh ${utils_path}/sh-utils/center/3_remote_copy.sh $module $host ui
else
echo "Step 3: skip remote copy project"
fi
if [ "$replace" = true ]; then
echo "Step 4: replace static files and replace ip. "
ssh root@${host} sh ${utils_path}/sh-utils/worker/ui_replace_ip.sh $module $host $ui_sys_type "$use_public_ip"
else
echo "Step 4: replace static files and replace ip"
fi
#!/bin/sh
source ~/.bash_profile
module_name=$1
worker_host=$2
re_load_config=$3
use_public_ip=$4
public_ip="139.198.2.95"
echo "java_start parameter: module_name: ${module_name}, worker_host: ${worker_host}, re_load_config: ${re_load_config}, use_public_ip: ${use_public_ip}"
echo "cd /home/quant_group/${module_name}/"
cd /home/quant_group/${module_name}/
if [[ "${re_load_config}" = true ]]; then
web_no=$((${worker_host:10}))
basic_no=$((${worker_host:10}+1))
mysql_no=$((${worker_host:10}+2))
echo "java_start Run ${module_name} start.sh on ${worker_host}, basic_no is ${basic_no}, mysql_no is ${mysql_no}"
echo "java_start 1. replace application.properties"
ts=`date +%s`
echo "curl http://oeazjz3gi.bkt.clouddn.com/qa.${module_name}.application.properties?random=${ts} -o new.application.properties"
curl http://oeazjz3gi.bkt.clouddn.com/qa.${module_name}.application.properties?random=${ts} -o new.application.properties
mv -f new.application.properties application.properties
if [[ "${use_public_ip}" = false ]]; then
echo "java_start use_public_ip is: ${use_public_ip}!"
sed -i "s/192.168.4.3/${worker_host}/g" application.properties
else
echo "java_start use_public_ip is: ${use_public_ip}!"
if [ $web_no -lt 100 ]; then
echo "web_no < 100, ${web_no}"
sed -i "s/192.168.4.3:7/${public_ip}:${web_no}/g" application.properties
else
echo "web_no >= 100, ${web_no}"
sed -i "s/192.168.4.3:70/${public_ip}:${web_no}/g" application.properties
fi
fi
sed -i "s/192.168.4.4/192.168.4.${basic_no}/g" application.properties
sed -i "s/192.168.4.5/192.168.4.${mysql_no}/g" application.properties
else
echo "java_start 1. Skip replace application.properties"
fi
echo "java_start 2. java -jar start"
if [[ "${module_name}" = "xyqb" ]]
then
package_name="xyqb-0.0.1-SNAPSHOT.jar"
elif [[ "${module_name}" = "pay-center" ]]
then
package_name="pay-center-0.0.1-SNAPSHOT.jar"
elif [[ "${module_name}" = "han-gu-guan" ]]
then
package_name="xyqb-openauth-0.0.1-SNAPSHOT.jar"
elif [[ "${module_name}" = "di-ting" ]]
then
package_name="xyqb-di_ting-0.0.1-SNAPSHOT.jar"
elif [[ "${module_name}" = "jian-men-guan" ]]
then
package_name="risk-control-auth-1.0-SNAPSHOT.jar"
elif [[ "${module_name}" = "du-jiang-yan" ]]
then
package_name="du-jiang-yan-1.0-SNAPSHOT.jar"
elif [[ "${module_name}" = "financial-system" ]]
then
package_name="xyqb-financial_system-0.0.1-SNAPSHOT.jar"
elif [[ "${module_name}" = "mall" ]]
then
package_name="xyqb-mall-0.0.1-SNAPSHOT.jar"
elif [[ "${module_name}" = "quartz" ]]
then
package_name="xyqb-quartz-0.0.1-SNAPSHOT.jar"
elif [[ "${module_name}" = "red-packet" ]]
then
package_name="redpacket-0.0.1-SNAPSHOT.jar"
elif [[ "${module_name}" = "xyqb-user" ]]
then
package_name=" xyqb-user2-0.0.1-SNAPSHOT.jar"
else
package_name="${module_name}-0.0.1-SNAPSHOT.jar"
fi
echo "java -Xmx512m -XX:PermSize64m -Xloggc:/tmp/${module_name}_gc.log -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -jar ${package_name} --worker 1 --currentWorker 1 -t > /dev/null 2>&1 & "
java -Xmx512m -XX:PermSize64m -Xloggc:/tmp/${module_name}_gc.log -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -jar ${package_name} --worker 1 --currentWorker 1 -t > /dev/null 2>&1 &
if [ $? -ne 0 ]
then
echo "Fail to start"
echo $?
fi
#!/bin/sh
module_name=$1
process=`ps -ef|grep java|grep ${module_name}_gc|awk '{print $2}'`
if [ "$process" != "" ]; then
echo "kill -9 $process"
kill -9 $process
else
echo "${module_name} process does not exist. Skip kill step!"
fi
#!/usr/bin/env bash
# 切分日志,备份老运行代码
#运行示例
# sh backup.sh code_path log_path package_name module_name
function back_up()
{
timestamp=`date +%Y%m%d-%H%M%S`
timestamp_log=`date +%Y-%m-%d.%H%M%S`
code_path=$1
log_path=$2
package_name=$3
module_name=$4
echo "begin backup: module name: ${module_name}, code path: ${code_path}, log path: ${log_path}, package name: ${package_name}"
echo "timestamp: ${timestamp}, timestamplog: ${timestamplog}"
back_up_path=/home/quant_group/ep/backup/${module_name}
mkdir -p ${back_up_path}
mv ${code_path} ${back_up_path}/${package_name}.${timestamp}
mv ${log_path} ${log_path}.${timestamp_log}
}
back_up $@
exit 0
\ No newline at end of file
#!/usr/bin/env bash
function ack()
{
ack_phrase="$1"
log_path="$2"
max_wait_log_generate_time="$3"
max_wait_ack_time="$4"
wait_log_generate_time=0
wait_ack_time=0
echo "begin acknowledge whether the deploy start OK, ACK_PHRASE=${ack_phrase}, log_path=${log_path}"
while [ ! -f ${log_path} ]
do
echo "wait_log_generate_time is ${wait_log_generate_time}, max_wait_log_generate_time is ${max_wait_log_generate_time} "
if ((${wait_log_generate_time}>${max_wait_log_generate_time}))
then
echo "the log generated time exceed the limit"
exit -1
fi
echo 'the log does not exist, wait for 5 seconds'
sleep 5
let "wait_log_generate_time+=5"
done
echo "listen for the log ack..."
for ((i=0;;))
do
bootstrap_flag=`cat ${log_path} |grep "${ack_phrase}"| wc -l`
if [ "${bootstrap_flag}" = 0 ] && [ "${max_wait_ack_time}" -gt "${wait_ack_time}" ]
then
sleep 5
let "wait_ack_time+=5"
echo "waiting for bootstrap flag for ${wait_ack_time}"
elif [ "${bootstrap_flag}" = 1 ]
then
echo "server is start~"
exit 0
else
echo "server not startup in ${max_wait_ack_time} seconds..."
exit -1
fi
done
}
ack "$1" $2 $3 $4
\ No newline at end of file
#!/bin/sh
source ~/.bash_profile
module_name=$1
worker_host=$2
re_load_config=$3
echo "[params] module_name: $1, worker_host: $2, re_load_config: $3"
utils_path="/home/quant_group/test-utils"
basic_no=$((${worker_host:10}+1))
mysql_no=$((${worker_host:10}+2))
mkdir -p /home/quant_group/remote_backup/${module_name}
rm -rf /home/quant_group/remote_backup/${module_name}
tar -zxvf /home/quant_group/remote_backup/${module_name}.tar.gz -C /home/quant_group/remote_backup
mkdir -p /home/quant_group/${module_name}
rm -rf /home/quant_group/${module_name}
mv /home/quant_group/remote_backup/${module_name} /home/quant_group/
cd /home/quant_group/${module_name}/
ts=`date +%s`
if [ ${module_name} = "AppBackend" ]; then
sourceConfigFile=qa.${module_name}.config.js
targetConfigFile=config/environment/test.js
restartCmd="sh /home/quant_group/${module_name}/test.sh"
elif [ ${module_name} = "activity-op" ]; then
sourceConfigFile=qa.${module_name}.config.js
targetConfigFile=src/config.js
echo "sh /home/quant_group/${module_name}/stop.sh"
sh /home/quant_group/${module_name}/stop.sh
echo "npm install"
npm install
restartCmd="sh /home/quant_group/${module_name}/start.sh"
elif [ ${module_name} = "qin-qiong" ]; then
echo "sh ${utils_path}/sh-utils/worker/process_stop.sh python port=7022"
sh ${utils_path}/sh-utils/worker/process_stop.sh "python" "port=7022"
sleep 5
python /home/quant_group/${module_name}/setup.py install
echo "#!/bin/sh" > start.sh
echo "python /home/quant_group/${module_name}/run.py --mode=beta --port=7022 > /dev/null 2>&1 &" >> start.sh
sourceConfigFile=qa.${module_name}.config.properties
targetConfigFile=config/beta/config.properties
restartCmd="sh /home/quant_group/${module_name}/start.sh"
# restartCmd="python /home/quant_group/qin-qiong/run.py --mode=beta --port=7022 > /dev/null 2>&1 &"
elif [ ${module_name} = "xyqb-query" ]; then
echo "sh ${utils_path}/sh-utils/worker/process_stop.sh python port=7033"
sh ${utils_path}/sh-utils/worker/process_stop.sh "python" "port=7033"
sleep 5
python /home/quant_group/${module_name}/server/setup.py install
echo "#!/bin/sh" > start.qa.sh
echo "python /home/quant_group/${module_name}/server/run.py --mode=beta --port=7033 > /dev/null 2>&1 &" >> start.qa.sh
sourceConfigFile=qa.${module_name}.config.ini
targetConfigFile=server/config/beta/config.ini
restartCmd="sh /home/quant_group/${module_name}/start.qa.sh"
elif [ ${module_name} = "op-api" ]; then
sourceConfigFile=qa.${module_name}.config.js
targetConfigFile=src/config.js
echo "sh /home/quant_group/${module_name}/stop.sh"
sh /home/quant_group/${module_name}/stop.sh
echo "npm install"
npm install
restartCmd="sh /home/quant_group/${module_name}/start.sh"
else
echo "currently only AppBackend, qin-qiong, and xyqb-query, op-api, activity-op are supported by this script"
fi
if [[ "${re_load_config}" = true ]]; then
echo "Step 1: get config from qiqiu"
echo "curl http://oeazjz3gi.bkt.clouddn.com/${sourceConfigFile}?random=${ts} -o new.config"
curl http://oeazjz3gi.bkt.clouddn.com/${sourceConfigFile}?random=${ts} -o new.config
mv -f new.config $targetConfigFile
else
echo "Step 1: Skip reload config"
fi
echo "Step 2: replace ip"
sed -i "s/192.168.4.3/${worker_host}/g" $targetConfigFile
sed -i "s/192.168.4.4/192.168.4.${basic_no}/g" $targetConfigFile
sed -i "s/192.168.4.5/192.168.4.${mysql_no}/g" $targetConfigFile
echo "Step 3: restart"
echo $restartCmd
$restartCmd
#!/bin/sh
#
target_host=192.168.10.2
modules='di-ting du-jiang-yan han-gu-guan jian-men-guan mall pay-center quartz xyqb'
function copy_to()
{
module=$1
mkdir -p /home/quant_group/${module}
echo cd /home/quant_group/${module}
cd /home/quant_group/${module}
rm -rf *
tar zxf /home/quant_group/deploy_backup/${module}/${module}.${target_host}.tgz -C /home/quant_group/${module}/
mv ${module}.${target_host}/* ./
cp /home/quant_group/deploy_backup/${module}/*.jar ./
}
if [[ "${module_name}" = "ALL" ]]
then
for module in $modules
do
copy_to ${module}
echo ${module}
done
elif [[ "${module_name}" = "" ]]
then
echo 'Fail module name is empty'
exit -1
else
copy_to ${module_name}
echo ${module_name}
fi
\ No newline at end of file
#!/bin/sh
target_host=192.168.10.2
modules='di-ting du-jiang-yan han-gu-guan jian-men-guan mall pay-center quartz xyqb'
function copy_to()
{
module=$1
mkdir -p /home/quant_group/${module}
echo cd /home/quant_group/${module}
cd /home/quant_group/${module}
rm -rf *
tar zxf /home/quant_group/deploy_backup/${module}/${module}.${target_host}.tgz -C /home/quant_group/${module}/
mv ${module}.${target_host}/* ./
cp /home/quant_group/deploy_backup/${module}/*.jar ./
}
if [[ "${module_name}" = "ALL" ]]
then
for module in $modules
do
copy_to ${module}
echo ${module}
done
elif [[ "${module_name}" = "" ]]
then
echo 'Fail module name is empty'
exit -1
else
copy_to ${module_name}
echo ${module_name}
fi
\ No newline at end of file
#!/bin/sh
java_modules='di-ting du-jiang-yan han-gu-guan jian-men-guan mall pay-center quartz xyqb'
ui_modules='di-ting-ui xyqb-ui pay-center-ui'
if [[ "${module_type}" = "java" ]]
then
modules=$java_modules
else
modules=$ui_modules
fi
mkdir -p /home/quant_group/deploy_backup
function clean_backup()
{
module=$1
mkdir -p /home/quant_group/deploy_backup/${module}
echo cd /home/quant_group/deploy_backup/${module}
cd /home/quant_group/deploy_backup/${module}
rm -rf *
}
if [[ "${module_name}" = "ALL" ]]
then
for module in $modules
do
clean_backup ${module}
echo clean_backup ${module}
done
elif [[ "${module_name}" = "" ]]
then
echo 'Fail module name is empty'
exit -1
else
clean_backup ${module_name}
echo clean_backup ${module_name}
fi
\ No newline at end of file
#!/bin/sh
process_type=$1
process_key=$2
process=`ps -ef|grep $process_type|grep $process_key|awk '{print $2}'`
if [ "$process" != "" ]; then
echo "kill -9 $process"
kill -9 $process
else
echo "$process_type ${process_key} process does not exist. Skip kill step!"
fi
#!/usr/bin/env bash
# ******** the script is used when jenkins auto deploy modules ********
# ******** used by ../deploy/ui_deploy.sh ********
module_name=$1
host=$2
ui_sys_type=$3
use_public_ip=$4
public_ip="139.198.2.95"
if [[ "${host}" = "192.168.10.2" ]]
then
worker_host=119.254.102.73
else
worker_host=$host
fi
echo "rm -rf /home/quant_group/${module_name}/dist"
rm -rf /home/quant_group/${module_name}/dist
echo "tar -zxvf /home/quant_group/${module_name}/${module_name}_dist.tar.gz -C /home/quant_group/${module_name}"
tar -zxvf /home/quant_group/${module_name}/${module_name}_dist.tar.gz -C /home/quant_group/${module_name}
if [[ "${ui_sys_type}" = "management_sys" ]]; then
if [[ "${module_name}" = "di-ting-ui" ]]; then
echo "cd /home/quant_group/${module_name}/dist/public/app"
cd /home/quant_group/${module_name}/dist/public/app
else
echo "cd /home/quant_group/${module_name}/dist/js"
cd /home/quant_group/${module_name}/dist/js
fi
elif [[ "${ui_sys_type}" = "business_sys" ]]; then
if [[ "${module_name}" = "xyqb-ui" ]]; then
echo "cd /home/quant_group/${module_name}/dist/public/app"
cd /home/quant_group/${module_name}/dist/public/app
elif [[ "${module_name}" = "xyqb-user-ui" ]]; then
echo "cd /home/quant_group/${module_name}/dist/app/js"
cd /home/quant_group/${module_name}/dist/app/js
elif [[ "${module_name}" = "offline-ui" || "${module_name}" = "activity-ui" ]]; then
echo "cd /home/quant_group/${module_name}/dist/app/js"
cd /home/quant_group/${module_name}/dist/app/js
else
echo "cd /home/quant_group/${module_name}/dist/app"
cd /home/quant_group/${module_name}/dist/app
fi
else
echo "Error! Please config ui_sys_type: business_sys or management_sys."
fi
if [[ "${use_public_ip}" = false ]]; then
echo "use_public_ip is False: ${use_public_ip}!"
sed -i "s/192.168.4.3/${worker_host}/g" *.js
else
echo "use_public_ip is True: ${use_public_ip}!"
web_no=$((${worker_host:10}))
if [ $web_no -lt 100 ]; then
echo "web_no < 100, ${web_no}"
sed -i "s/192.168.4.3:7/${public_ip}:${web_no}/g" *.js
else
echo "web_no >= 100, ${web_no}"
sed -i "s/192.168.4.3:70/${public_ip}:${web_no}/g" *.js
fi
fi
#!/usr/bin/env bash
work_path=/home/quant_group
cd ${work_path}/remote_backup
if [ -d ${work_path}/remote_backup/test-utils ]
then
echo "rm -rf $${work_path}/remote_backup/test-utils"
rm -rf ${work_path}/remote_backup/test-utils
fi
tar -zxf test-utils.tar.gz
if [ -d ${work_path}/test-utils ]
then
echo "rm -rf ${work_path}/test-utils"
rm -rf ${work_path}/test-utils
fi
mv ${work_path}/remote_backup/test-utils ${work_path}/test-utils
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment