[英]Linux Bash Script And Mongo
我有一个bash脚本来检查MongoDB数据库并在满足某些条件时发送电子邮件。
Mongo为你提供了--eval选项来返回一个值。 但相反,有类似的东西:
ALERT = TRUE | FALSE
我有:
ALERT = MongoDB shell版本:2.6.1
#!/bin/bash
echo "WatchDog Jerry"
ALERT=$(mongo ob --eval 'var now = new Date().getTime(), alert = false; db.sess.find().forEach(function(sess){ var delay = 1 * 60 * 1000; var ts = sess.ts.toNumber(); if((now - ts) > delay) alert = true;}); print(alert);')
echo "alert: $ALERT"
if [ "$ALERT" == "true" ]; then
mail -s "ALARM - WatchDog Jerry" marco@test.com < /root/watchdog/email
fi
有人能帮我吗? 我需要的是将js变量'alarm'分配给bash变量ALARM
将switch --quiet
添加到命令行,例如mongo --quiet --eval your-statement
,忽略你得到的字符串。
正如您现在所拥有的那样,您正在为要执行的实际命令设置alert
。 如果要捕获mongo
命令的输出 ,则应使用:
alert=`mongo blah blah`
要么:
alert=$(mongo blah blah)
我更喜欢后一种形式,因为它更容易嵌套命令。
一旦你修复了它,你可能仍然会从命令获得不需要的额外输出(由更新确认)。
直接从命令行运行mongo
命令将为您提供您将收到的文本。 然后就是按摩输出的问题,这样你看到的唯一输出就是你想要的。
这可以通过像grep -v
(删除不需要的东西)或者找到mongo
的命令行选项来管理输出,这将导致它根本不输出不需要的东西(例如使用--quiet
) 。 有关详细信息,请参见此处
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.