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数据、远程获取文件大小示例脚本的更多相关文章

  1. I.MX6 Android Linux shell MMPF0100 i2c 设置数据

    #!/system/bin/busybox ash # # I.MX6 Android Linux shell MMPF0100 i2c 设置数据 # 说明: # 本文主要记录通过shell脚本来设置 ...

  2. Linux Shell自动交互/人机交互的三种方法

    如果你要学习linux,你可能会遇到Linux Shell自动交互问题,这里将介绍Linux Shell自动交互的解决方法,在这里拿出来和大家分享一下. 一.背景 shell脚本在处理自动循环或大的任 ...

  3. Linux Shell 自动交互功能

    需求背景:   近日,在安装某软件过程,发现在安装过程需要输入一些信息才能继续下一步操作,在机器数量较少情况下,我们可以单台登录上去完成安装操作,但当机器数量超过一定时,如果再手动登录操作,就会产生大 ...

  4. Linux shell 自动删除n天前日志

    linux是一个很能自动产生文件的系统,日志.邮件.备份等.虽然现在硬盘廉价,我们可以有很多硬盘空间供这些文件浪费,让系统定时清理一些不需要的文件很有一种爽快的事情.不用你去每天惦记着是否需要清理日志 ...

  5. linux shell 字符串操作详解(获取长度、查找,替换)

    在做shell批处理程序时候,常常会涉及到字符串相关操作.有许多命令语句,如:awk,sed都能够做字符串各种操作. 事实上shell内置一系列操作符号,能够达到相似效果,大家知道,使用内部操作符会省 ...

  6. linux shell 自动判断操作系统release 然后连接FTP yum源的脚本

    如何搭建本地yum源见附录① 如何搭建FTP yum源见附录② 脚本正文: #!/bin/sh# CenterOS config yumOSV=`rpm -q --qf %{version} cent ...

  7. Linux Shell 自动备份脚本

    写一个使用shell脚本增量备份系统文件,顺便复习一下shell脚本相关的命令,这个脚本可以根据自己的需求来备份不同的文件或者文件夹,进行完整备份和增量备份. 参考的网址:http://blog.51 ...

  8. linux shell自动输入实现

    1 #!/bin/sh 2  3 while read line 4 do 5         str=$line 6         var1=`echo $str|awk -F ' ' '{pri ...

  9. Linux Shell输出颜色字符学习笔记(附Python脚本实现自动化定制生成)

    齿轮发出咔嚓一声,向前进了一格.而一旦向前迈进,齿轮就不能倒退了.这就是世界的规则. 0x01背景 造了个轮子:御剑师傅的ipintervalmerge的Python版本.觉得打印的提示信息如果是普通 ...

随机推荐

  1. pyqt添加启动等待界面

    一.实验环境 1.Windows7x64_SP1 2.anaconda3.7 + python3.7(anaconda集成,不需单独安装) 3.pyinstaller3.5 #使用pyinstalle ...

  2. 扎心一问!你凭什么成为top1%的Java工程师?

    目录 1.解决生产环境里的突发故障 2.对棘手的线上性能问题进行优化 3.锻造区别于普通码农的核心竞争力 4.打磨架构设计能力 5.你凭什么成为 top1%?   你工作几年了? 是否天天CRUD到吐 ...

  3. Docker容器 MySQL中文乱码解决方案

    docker exec进入容器 sudo docker exec -it 588340b778f6 bash 执行以下命令,将 character-set-server=utf8 写入mysql配置文 ...

  4. redis设置、查看和校验密码

    Redis没有实现访问控制这个功能,但是它提供了一个轻量级的认证方式(密码),可以通过编辑[redis.conf]配置文件来启用认证,这里简单介绍一下Redis中如何设置.查看和校验密码(登录验证和操 ...

  5. struts2增删改查

    1.导入相关的依赖:struts.自定义标签库 配置pom.xml <project xmlns="http://maven.apache.org/POM/4.0.0" xm ...

  6. Shell(三):echo、printf、test命令

    一.echo 1.显示普通字符串: echo "today is a wonderful day" 这里的双引号可以省略. 2.显示转义字符: echo "\" ...

  7. JS基础语法---函数---介绍、定义、函数参数、返回值

    函数: 把一坨重复的代码封装,在需要的时候直接调用即可 函数的作用: 代码的重用 函数需要先定义,然后才能使用 函数名字:要遵循驼峰命名法 函数一旦重名,后面的会把前面的函数覆盖 Ctrl +鼠标左键 ...

  8. ES6箭头函数-2

    以下来文字来自阮大神所著书籍摘记.为了加深记忆.本人就手动敲了一遍(相关代码本人也执行过,可保证运行通过.) 箭头函数注意事项: 1) 函数体内的this对象就是定义时所在的对象,而不是使用时所在的对 ...

  9. React Hooks究竟是什么呢?

    摘要: React Hooks原理解析. 原文:快速了解 React Hooks 原理 译者:前端小智 我们大部分 React 类组件可以保存状态,而函数组件不能? 并且类组件具有生命周期,而函数组件 ...

  10. Master Note: Troubleshooting ORA-1548 error (Doc ID 1577988.1)

    APPLIES TO: Oracle Database Cloud Schema Service - Version N/A and laterOracle Database Exadata Clou ...