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. springboot-热部署Jrebel

    1. 场景描述 介绍下idea+springboot下的热部署插件-Jrebel,贼好用,以前用过好多种,但是总出现不稳定或者会莫名其妙的没有部署新代码. 2.解决方案 springboot自带的de ...

  2. windows 下命令行启动 appium-desktop

    启动appium-desktop如果要启动appium-desktop,双击appium.exe,启动后如下图:   启动appium-server通过下面解决方案直接启动appium-server, ...

  3. php中trait的使用方法

    1.php中的trait是啥? 看上去既像类又像接口,其实都不是,Trait可以看做类的部分实现,可以混入一个或多个现有的PHP类中,其作用有两个:表明类可以做什么:提供模块化实现.Trait是一种代 ...

  4. VSCode 开发插件 推荐

    VSCode 必装的 10 个高效开发插件  本文介绍了目前前端开发最受欢迎的开发工具 VSCode 必装的 10 个开发插件,用于大大提高软件开发的效率. VSCode 的基本使用可以参考我的原创视 ...

  5. Linq分页排序通用方法

    1.通用方法 2.调用 -----------------------------1.------------------------------------------- public class ...

  6. Java设计模式:Flyweight(享元)模式

    概念定义 享元(Flyweight)模式运用共享技术高效地支持大量细粒度对象的复用. 当系统中存在大量相似或相同的对象时,有可能会造成内存溢出等问题.享元模式尝试重用现有的同类对象,如果未找到匹配的对 ...

  7. Oracle - 如何查找指定字符串所出现的表

    需求:举个例子,oracle测试库的scott用户下面的有张emp表,emp表的ename列中有一行数据为'CLARK'.红色标记部分. SQL> select * from scott.emp ...

  8. Python爬取前程无忧网站上python的招聘信息

    前言 文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者: 我姓刘却留不住你的心 PS:如有需要Python学习资料的小伙伴可以 ...

  9. python爬取网站视频保存到本地

    前言 文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者: Woo_home PS:如有需要Python学习资料的小伙伴可以加点 ...

  10. 关于yield和yield from

    一.简单示例 def yield_func(): for _ in range(2): yield "12" def yield_from_func(): for _ in ran ...