Linux shell自动读mongo数据、远程获取文件大小示例脚本
1、示例1
功能:对mongoDB导出数据,根据sid的不同状态进行统计
技术点:shell bash 读写文件、字符串截取、函数、用多个文件提到的map、grep查找并赋值给变量
#!/bin/bash i=1
file=/Users/jifeng/Downloads/diu.txt read_recorde(){ findstr=$(grep "$1" tmp.sid.1)
find_sid=${findstr:0:20}
find_status=${findstr:23:2}
find_chanel=${findstr:21:1}
find_say=${findstr:25} echo "$findstr :have" >> tmp.sid.finded if [[ $find_status == 'nu' ]] && [[ $3 == 'nu' ]];
then
echo "$find_sid:$find_chanel:$find_status:$find_say" >> tmp.sid.2null
echo "$1:$2:$3:$4" >> tmp.sid.2null elif [[ $find_status == 'nu' ]] && [[ $3 == 'ok' ]];
then
echo "$find_sid:$find_chanel:$find_status:$find_say" >> tmp.sid.1null
echo "$1:$2:$3:$4" >> tmp.sid.1null elif [[ $find_status == 'ok' ]] && [[ $3 == 'nu' ]];
then
echo "$find_sid:$find_chanel:$find_status:$find_say" >> tmp.sid.1null
echo "$1:$2:$3:$4" >> tmp.sid.1null
elif [[ $find_status == 'ok' ]] && [[ $3 == 'ok' ]];
then
echo "$find_sid:$find_chanel:$find_status:$find_say" >> tmp.sid.2ok
echo "$1:$2:$3:$4" >> tmp.sid.2ok
else
echo "$find_sid:$find_chanel:$find_status:$find_say" >> tmp.sid.undefind
echo "$1:$2:$3:$4" >> tmp.sid.undefind fi } rm -rf tmp.sid.1null tmp.sid.2null tmp.sid.2ok tmp.sid.undefind tmp.sid.1 tmp.sid.finded tmp.sid.single
touch tmp.sid.1 cat $file | while read line || [[ -n ${line} ]];
do sid=${line:0:20}
channel=${line:20:1}
status=${line:62:2}
say=${line:64}
echo line $i:$sid:$channel:$status if grep -q "$sid" tmp.sid.1
then
read_recorde "$sid" "$channel" "$status" "$say"
echo ">>>$findsid"
else
echo "$sid:$channel:$status:$say" >> tmp.sid.1
fi
let "i=$i+1" done echo "回归"
cat $file | while read line || [[ -n ${line} ]];
do _sid=${line:0:20} if grep -q "$_sid" tmp.sid.finded
then
a=1+1
else
echo $line >> tmp.sid.single
fi done
2、示例
功能:根据ID调用mongo client进行查询并将结果存入变量,通过ssh远程登录获取响应的文件大小
#!/bin/bash
i=1
file=/root/1616/tmp.sid.1null
#file=/root/1616/tmp.sid.2ok
rm -rf tmp.sid.1null.filesize
cat $file | while read line || [[ -n ${line} ]];
do sid=${line:0:20}
channel=${line:21:1} args='db.iat.find({"sId":"'${sid}${channel}'"},{"host":1}).forEach(function(e){print(e.host)})'
result=`/data/mongodb/bin/mongo --quiet 172.16.175.68:40000/shtel --eval "$args"`
ip="${result%%:*}"
#echo $ip
ssh_args='ls -lh /data/voice/$sid*' #echo "ssh_arg:$ssh_args"
#echo "ssh:ssh -p 20000 root@$ip "$ssh_args
#files=`ssh -p -q 20000 root@$ip "$ssh_args"` files=`ssh -f -p 20000 root@$ip 'ls -lh /data/voice/'$sid$channel'*'`
#echo "file:"$files fileSize=`echo $files | awk -F' ' '{print $5}'`
#echo "filesize:"$fileSize
echo "line $i $line:$ip:$fileSize"
echo "$line:$ip:$fileSize" >> tmp.sid.1null.filesize
let "i=$i+1"
done
Linux shell自动读mongo数据、远程获取文件大小示例脚本的更多相关文章
- I.MX6 Android Linux shell MMPF0100 i2c 设置数据
#!/system/bin/busybox ash # # I.MX6 Android Linux shell MMPF0100 i2c 设置数据 # 说明: # 本文主要记录通过shell脚本来设置 ...
- Linux Shell自动交互/人机交互的三种方法
如果你要学习linux,你可能会遇到Linux Shell自动交互问题,这里将介绍Linux Shell自动交互的解决方法,在这里拿出来和大家分享一下. 一.背景 shell脚本在处理自动循环或大的任 ...
- Linux Shell 自动交互功能
需求背景: 近日,在安装某软件过程,发现在安装过程需要输入一些信息才能继续下一步操作,在机器数量较少情况下,我们可以单台登录上去完成安装操作,但当机器数量超过一定时,如果再手动登录操作,就会产生大 ...
- Linux shell 自动删除n天前日志
linux是一个很能自动产生文件的系统,日志.邮件.备份等.虽然现在硬盘廉价,我们可以有很多硬盘空间供这些文件浪费,让系统定时清理一些不需要的文件很有一种爽快的事情.不用你去每天惦记着是否需要清理日志 ...
- linux shell 字符串操作详解(获取长度、查找,替换)
在做shell批处理程序时候,常常会涉及到字符串相关操作.有许多命令语句,如:awk,sed都能够做字符串各种操作. 事实上shell内置一系列操作符号,能够达到相似效果,大家知道,使用内部操作符会省 ...
- linux shell 自动判断操作系统release 然后连接FTP yum源的脚本
如何搭建本地yum源见附录① 如何搭建FTP yum源见附录② 脚本正文: #!/bin/sh# CenterOS config yumOSV=`rpm -q --qf %{version} cent ...
- Linux Shell 自动备份脚本
写一个使用shell脚本增量备份系统文件,顺便复习一下shell脚本相关的命令,这个脚本可以根据自己的需求来备份不同的文件或者文件夹,进行完整备份和增量备份. 参考的网址:http://blog.51 ...
- linux shell自动输入实现
1 #!/bin/sh 2 3 while read line 4 do 5 str=$line 6 var1=`echo $str|awk -F ' ' '{pri ...
- Linux Shell输出颜色字符学习笔记(附Python脚本实现自动化定制生成)
齿轮发出咔嚓一声,向前进了一格.而一旦向前迈进,齿轮就不能倒退了.这就是世界的规则. 0x01背景 造了个轮子:御剑师傅的ipintervalmerge的Python版本.觉得打印的提示信息如果是普通 ...
随机推荐
- [反汇编]函数开始部分利用mov ebx,esp找到返回地址(_KTRAP_FRAME结构)
我们理解call原理,首先将返回地址压入栈中,之后执行调用. 因此,在一个函数开始部分,esp依旧是上一个栈帧的esp,此时esp指向返回地址. 这就意味着使用 mov ebx,esp,之后 [ebx ...
- python连接Oracle工具类
上代码: # -*- coding:utf-8 -*- import cx_Oracle import pandas as pd class ORACLE(object): def __init__( ...
- 易优CMS:【小白学标签】之empty的基础用法
[基础用法] 名称:empty 功能:判断某个变量是否为空,可以嵌套到任何标签里面使用,比如:channel.type等 语法: {eyou:empty name='$eyou.field.seo_t ...
- 易优CMS:arcview的基础用法
[基础用法] 名称:arcview 功能:获取单条文档数据 语法: {eyou:arcview aid='文档ID'} <a href="{$field.arcurl}"&g ...
- 跳转常规 -- 为什么不要使用404、500等http状态码作为业务代码响应
不要使用HTTP状态码作为业务代码响应 HTTP状态码 是指浏览器访问网址,成功或异常时浏览器或服务器告知用户的代码数字,它指的是网络或服务器的状态,有着不同的含义. 参加MDN.Java Api,常 ...
- DDoS攻击工具
DDoS攻击工具 综合性工具 综合性工具除了可以进行DDoS攻击外,还可用于其他的用途,例如:端口扫描.安全审计.防火墙等.实际上,大部分综合性工具开发的原始目的并不是用于DDoS,而是"网 ...
- flink on yarn模式下两种提交job方式
yarn集群搭建,参见hadoop 完全分布式集群搭建 通过yarn进行资源管理,flink的任务直接提交到hadoop集群 1.hadoop集群启动,yarn需要运行起来.确保配置HADOOP_HO ...
- BayaiM__ORACLE之ASM概念 --V 1.0.0
BayaiM__ORACLE之ASM概念 --V 1.0.0 -------------------------------------- ...
- BayaiM__MySQL 5.7 新特性详解
原创 作者:bayaim 时间:2016-06-15 11:40:50 122 0 阅读(22130) | 评论(43443) | 转发(3232 ...
- ORA-01555 When Max Query Length Is Less Than Undo Retention, small or 0 Seconds (Doc ID 1131474.1)
ORA-01555 When Max Query Length Is Less Than Undo Retention, small or 0 Seconds (Doc ID 1131474.1) A ...