采集MySQL数据并通过SFTP上传文件服务器

采集MySQL数据脚本(mysql_data_sftp_upload.sh)

####MYSQL数据库账号
MYSQL_USER=root
MYSQL_PWD=1234
MYSQL_NAME=db
MYSQL_HOST=10.x.x.x
MYSQL_PORT=3303
 
#导出mysql文件
function exp_mysql_data()
{

timest=$2

mysql -u${MYSQL_USER} -p${MYSQL_PWD} -P${MYSQL_PORT} -h${MYSQL_HOST} -D${MYSQL_NAME} >$1 << EOF
set character_set_client = utf8;     
set character_set_results = utf8;    
set character_set_connection = utf8; 

select '$timest' timest, sum(a) user_num, sum(b) uv from tablea ;

EOF
 
sed -i "s/\t/,/g" $1 
sed -i "s/NULL//g" $1 
 
}

cd /home/admin/work/

today=`date '+%Y%m%d'`

echo ""
echo `date '+%Y-%m-%d %H:%M:%S'`" #######################    path: "$(pwd)/$0" START    ############################"

echo  `date '+%Y-%m-%d %H:%M:%S'`" args: "

# 日账单;每日上传昨日的数据
echo `date '+%Y-%m-%d %H:%M:%S'`" 处理 开始 --------------------------------------"
echo `date '+%Y-%m-%d %H:%M:%S'`" 数据采集=[ exp_mysql_data xxxx_"$today".csv "$today "]"
echo "---------------------------------采集结果------------------------------------"
cat "xxxx_"$today".csv"
echo "----------------------------------------------------------------------------"
echo `date '+%Y-%m-%d %H:%M:%S'`" 数据上传=[ expect sftp-file.exp 'put xxxx_"$today".csv' ]"
expect sftp-file.exp "put xxxx_"$today".csv"
mv "xxxx_"$today".csv" bak/"xxxx_"$today".csv"
echo `date '+%Y-%m-%d %H:%M:%S'`" 处理 结束 --------------------------------------"

echo `date '+%Y-%m-%d %H:%M:%S'`" #######################    path: "$(pwd)/$0" END    ##########################"
echo ""

sftp上传文件服务器 脚本(sftp-file.exp)  --通过expect 实现

#!/bin/expect
set timeout 2000
#获取参数文件名
set op [lindex $argv 0]
#set pwd [lindex $argv 1]

#sftp建立连接
spawn sftp [email protected]

expect "Password:"
send "sftppwd\r"
# sftp协议
expect "sftp>"

# 到指定目录下
send "cd upload\r"

#上传文件
send "${op}\r"

set timeout 3000
send "exit\r"

expect eof
#交互结束,退回到原用户

猜你喜欢

转载自blog.csdn.net/u013240609/article/details/124982290