使用shell和mongoShell结合解决问题!

解决问题:通过js脚本将格林威治时间转换成北京时间,并且推送给需求方。

# 时间转换为纯数字

startTime=`date -d "-1  day" "+%Y-%m-%d 00:00:00"`

endTime=`date "+%Y-%m-%d 00:00:00"`

st=$((`date --date "$startTime" +"%s"` * 1000))

et=$((`date --date "$endTime" +"%s"` * 1000))

#将数据从primary中导出(注意不要使用--csv,否则到导入的时候会报错)

mongoexport --host=10.136.3.117 --port=27017 --authenticationDatabase=admin --username=root [email protected] --db=gow --collection=playerlogs --query="{start:{\$gte:new Date($st),\$lt:new Date($et)}}"  -f userId,start  --out=/home/backup/playerlogs.csv

mongoexport --host=10.136.3.117 --port=27017 --authenticationDatabase=admin --username=root [email protected] --db=gow --collection=signinlogs --query="{time:{\$gte:new Date($st),\$lt:new Date($et)}}"  -f user,time   --out=/home/backup/signinlogs.csv

mongoexport --host=10.136.3.117 --port=27017 --authenticationDatabase=admin --username=root [email protected] --db=gow --collection=traderecords --query="{tradeTime:{\$gte:new Date($st),\$lt:new Date($et)}}"  -f userId,amount,tradeTime    --out=/home/backup/traderecords.csv

cd  /home/backup

#将文件传送到目标服务器

scp  playerlogs.csv  [email protected]:/home/backup/

scp  signinlogs.csv  [email protected]:/home/backup/

scp  traderecords.csv  [email protected]:/home/backup/

###############这个时候需要切换到另外一台机器上===========

#导入数据

/usr/local/mongodb_test/bin/mongoimport  --host=10.136.54.121 --port=27018 --authenticationDatabase=admin  --username=root [email protected] --db=gowDB --collection=playerlogs /home/backup/playerlogs.csv --drop

/usr/local/mongodb_test/bin/mongoimport  --host=10.136.54.121 --port=27018 --authenticationDatabase=admin  --username=root [email protected] --db=gowDB  --collection=signinlogs /home/backup/signinlogs.csv --drop

/usr/local/mongodb_test/bin/mongoimport  --host=10.136.54.121 --port=27018 --authenticationDatabase=admin  --username=root [email protected] --db=gowDB  --collection=traderecords /home/backup/traderecords.csv --drop

# 数据转换(使用mongo客服端命令调用js文件中的脚本,js脚本在最后面)

/usr/local/mongodb_test/bin/mongo 10.136.54.121:27018/gowDB -uroot  [email protected] --authenticationDatabase=admin  /home/backup/Datatransformation.js

# 导出数据

/usr/local/mongodb_test/bin/mongoexport --host=10.136.54.121 --port=27018 --authenticationDatabase=admin --username=root [email protected] --db=gowDB --collection=NewPlayerlogs  -f userId,start   --csv  --out=/home/backup/NewPlayerlogs.csv

/usr/local/mongodb_test/bin/mongoexport --host=10.136.54.121 --port=27018 --authenticationDatabase=admin --username=root [email protected] --db=gowDB --collection=NewSigninLogs  -f userId,time   --csv   --out=/home/backup/NewSigninLogs.csv

/usr/local/mongodb_test/bin/mongoexport --host=10.136.54.121 --port=27018 --authenticationDatabase=admin --username=root [email protected] --db=gowDB --collection=newTradeRecords -f userId,amount,tradeTime  --csv   --out=/home/backup/newTradeRecords.csv

# 推送数据(mutt发送邮件)

mutt [email protected],[email protected],[email protected],[email protected]   -s "我是魔兽-运营数据" -a /home/backup/NewPlayerlogs.csv /home/backup/NewSigninLogs.csv /home/backup/newTradeRecords.csv  </home/backup/Readme.txt

# .js脚本

db.newTradeRecords.drop() ;

db.NewPlayerlogs.drop();

db.NewSigninLogs.drop();

db.traderecords.find().forEach(function(x){ db.newTradeRecords.save({userId:x.userId,amount:x.amount,tradeTime:x.tradeTime.getFullYear().toString()+"-"+(x.tradeTime.getMonth()+1).toString()+"-"+x.tradeTime.getDate().toString()+" "+x.tradeTime.getHours().toString()+":"+x.tradeTime.getMinutes().toString()+":"+x.tradeTime.getSeconds().toString()})}) ;

db.playerlogs.find().forEach(function(x){ db.NewPlayerlogs.save({userId:x.userId,start:x.start.getFullYear().toString()+"-"+(x.start.getMonth()+1).toString()+"-"+x.start.getDate().toString()+" "+x.start.getHours().toString()+":"+x.start.getMinutes().toString()+":"+x.start.getSeconds().toString()})}) ;

db.signinlogs.find().forEach(function(x){ db.NewSigninLogs.save({userId:x.user,time:x.time.getFullYear().toString()+"-"+(x.time.getMonth()+1).toString()+"-"+x.time.getDate().toString()+" "+x.time.getHours().toString()+":"+x.time.getMinutes().toString()+":"+x.time.getSeconds().toString()})}) ;

# shell 将时间数字化

http://www.oschina.net/code/piece_full?code=6554&piece=10486#10486

# ssh信任登陆

http://www.lvtao.net/server/ssh-no-password.html

ssh信任登陆

ssh-keygen -t rsa

/root/.ssh/id_rsa

/root/.ssh/id_rsa.pub

scp -r id_rsa.pub 10.136.3.117:/root/.ssh/authorized_keys

# mutt的安装和使用方法

http://blog.sina.com.cn/s/blog_6cde2617010142kp.html

时间: 2024-08-27 10:52:25

使用shell和mongoShell结合解决问题!的相关文章

菜鸟--shell脚本编写之解决问题篇

一.执行时发现adb shell进入设备后不再继续往下执行了 adb shell cd /system/plugin/....exit 在网上查到的都是bat文件调用adb shell,没有sh文件调用adb shell不往下执行的,查找其他无果. 最后采用这个方法 adb shell < 1.txt 在1.txt里输入想在设备里运行的命令,可达到预期. 二.1.txt中返回${res} ,想在父脚本中引用${res} 解决办法:父shell和子shell之间的变量传递 ①如果想在子shell中

shell脚本抓取问题进程

引用原文shell脚本:#/bin/bashLOAD=$(awk '{print $1}' /proc/loadavg)CPUNUM=$(grep -c processor /proc/cpuinfo) if [ $(echo "$LOAD > $CPUNUM" | bc) = 1 ]; then    RESULT=$(ps -eo pcpu,pmem,user,args | awk '$1 > 0' | sort -nr)    if [ -n "$RESUL

零基础学习Shell编程

一:起因 (0)也许由于一时的冲动使得你开始关注并学习shell编程:亦许由于是"道听途说"shell的威力很大:亦许由于shell编程的魅力:亦许由于作为一个coder的偏好:亦许-- (1)先来搞清楚为什么要学shell,学习要有目的性 ---- 简单的说shell就是一个包含若干行Shell或者Linux命令的文件.对于一次编写,多次使用的大量命令,就可以使用单独的文件保存下来,以便日后使用. shell简单.灵活.高效,特别适合处理一些系统管理方面的小问题 shell可以实现自

执行shell脚本时报错let: not found的几种解决方法

首先阐述几个命令 echo $0   显示当前使用的shell版本 dpkg-reconfigure 设置软件包类型 脚本报错原因: Ubuntu默认使用的shell解析是dash,dash只有bash一部分的功能 首先我的系统执行 $  echo $0 -bash $   sudo dpkg-reconfigure dash 选择 No,使用bash作为默认shell 此时依然无法解决问题 经过试验 方法一: 脚本中#/bin/bash改为!/bin/sh 方法二: 使用bash shell_

shell 数值计算

shell中的赋值和操作默认都是字符串处理,在此记下shell中进行数学运算的几个特殊方法,以后用到的时候可以来看,呵呵.   1.错误方法举例   a)   var=1+1   echo $var   输出的结果是1+1,悲剧,呵呵      b)   var=1   var=$var+1   echo $var   输出结果是1+1,依然悲剧,呵呵      2.正确方法   1)使用let   var=1   let "var+=1"   echo $var   输出结果为2,这

Help Desk Meet Power Shell

Help Desk Meet Power Shell 2015-12-14 16:58 微软中国TechNet 阅读 397 跟大家分享桌面技术支持与Power shell一些看法. 桌面技术支持,起初更多的是机械性地重复单一的操作,例如,底层的硬件检修,中间的系统部署,到后面系统和软件维护.这个阶段重心的是"怎么做"和"问题是否解决".经验不断的累计之后,更多的应关注问题根源,明白"为什么",找到根源,从根本上解决问题,才能真正的提升自己.同时

shell脚本执行时报&quot;bad interpreter: Text file busy&quot;的解决方法

在执行一个shell脚本时,遇到了"-bash: ./killSession.sh: /bin/bash: bad interpreter: Text file busy"错误提示,如下所示: [[email protected] bin]$ ./killSession.sh      -bash: ./killSession.sh: /bin/bash: bad interpreter: Text file busy 此时只需要在#!/bin/bash,加一空格#! /bin/bas

[ shell编程 ] 前言

1.目的 (1)SHELL知识总结.好记性不如烂笔头,整理学习过的相关SHELL知识并结合自己的实践经验进行整理,内容不会涉及所有的知识点,只会涵盖个人最经常使用到.这样也可以为新手节约一部分实践,快速学习到工作中最常用的知识点. (2)知识拓展.有了这个基础支撑,就可以很容易发现自己的知识体系的盲点,补充拓展进行学习. (3)知识回顾.温故而知新,方便定期复习学习和实践过的SHELL知识,避免知识遗忘导致浪费曾经付出的宝贵时间. (4)知识分享和探讨. 2.思路    1.以工作中常见问题作为

shell软件工具设计的原则_转

随着时间的流逝,人们开发出了一套设计与编写软件工具的原则.在本书用来解决问题的程序中,你将会看到这些原则的应用示例.好的软件工具应该具备下列特点:一次做好一件事在很多方面,这都是最重要的原则.若程序只做一件事,那么无论是设计.编写.调试.维护,以及生成文件都会容易得多.举例来说,对于用来查找文件中是否有符合样式的grep程序,不应该指望用它来执行算术运算.这个原则的结果,自然就是会不断产生出更小.更专用于特定功能的程序,就像专业木匠的工具箱里,永远会有一堆专为特定用途所设计的工具.处理文本行,不