批量ssh登录机器
#site_search_hosts 10.4.16.205,10.4.20.87,10.4.20.88,10.4.20.89,10.4.20.90,10.4.20.92,10.4.20.93,10.4.21.51,10.4.21.52,10.4.21.53,10.4.21.54,10.4.33.136,10.4.33.137,10.4.33.138,10.4.33.139,10.4.33.140
site_search_hosts='10.4.16.205,10.4.20.87,10.4.20.88,10.4.20.89,10.4.20.90,10.4.20.92,10.4.20.93,10.4.21.51,10.4.21.52,10.4.21.53,10.4.21.54,10.4.33.136,10.4.33.137,10.4.33.138,10.4.33.139,10.4.33.140'
NODE_HOSTS=(${site_search_hosts//,/ })
 
#NODE_HOSTS=(
#       10.4.33.136
#       10.4.33.137
#       10.4.33.138
#       10.4.33.139
#       10.4.33.140
#       )
NODE_HOSTS_CNT=${#NODE_HOSTS[@]}
 
echo $NODE_HOSTS_CNT
 
for (( i=0; $i<${NODE_HOSTS_CNT}; i=$i+1 ))
do
        ssh "tiger@${NODE_HOSTS[$i]}" "hostname -i; \
 
        cd .service
        ls
done
 
例行
lastday=''
while [ 1 ]; do
    day=`date +%Y%m%d`
    hour=`date +%H`
    echo $lastday
    echo $day
    echo $hour
    if [ "${day}" != "${lastday}" -a ${hour} -eq 6 ]; then
        cur_date=`date -d -1day +%Y%m%d`
        echo 'run'
        lastday=$day
    fi
    sleep 600
    echo "done"
done
 
读入文件
n=0
CONF_FILE="action_needed.conf"
cat $CONF_FILE |
        while read LINE
        do
                echo "$n) $LINE"
                n=`expr $n + 1`
        done
 
字符串处理
$ date=`date`
$ echo $date
Mon Nov 30 10:52:09 CST 2015
$ echo ${date#* * * }
10:52:09 CST 2015
$ t1=${date#* * * } 
$ echo ${t1%:*:*} 
10
 
#First, get file name without the path:
filename=$(basename "$fullfile")
extension="${filename##*.}"
filename="${filename%.*}"
#Alternatively, you can focus on the last '/' of the path instead of the '.' which should work even if you have unpredictable file extensions:
filename="${fullfile##*/}"
 
正则表达式匹配
s="hdfs://hdfs.example.com:8800/app/yaoyao/20141203/part-00042"
if [[ $s =~ [0-9]{8,8} ]]; then
        echo ${BASH_REMATCH[0]}
fi
 
例行拉取日志(backtrack.sh)
#!/bin/bash
 
# Step 1: Check Parameters
if [ $# -lt 2 ]; then
        echo ""
        echo "Usage: sh $0 LastDay DaysToDownload"
        echo "Example: sh $0 20140831 7, this will download logs for 7 days: 20140825-20140831."
        echo ""
 
        exit
fi
 
# Step 2: Fetch log data
last_day=$1
days_to_download=$2
for((i = 1; i <= ${days_to_download} ; ++i));
do
        (( finished =  i - 1))
        (( togo =  ${days_to_download} - finished ))
 
        echo ""
        echo "-------" 
 
        if [ ${last_day} = "yesterday" ]; then
                day=`date -d -${i}day +%Y%m%d`
        else
                day=`date -d "${last_day} ${finished} days ago" +%Y%m%d`
        fi
 
        echo "[`date`] Downloading log for ${day}, ${finished} finished, ${togo} to go......"
 
        start_date=`date`
        for ((j=1; j<=3; j++));
        do
            # download logs
            # download logs finished
            if [ $? -eq 0 ]; then
                break
            fi
        done
        end_date=`date`
 
        echo "Finished ${day}. Started at ${start_date}, finished at ${end_date}"
done
 
echo ""
echo "Finished downloading $2 logs ( ${day} - ${last_day} ) !"
echo ""
 
例行拉取日志(forwardtrack.sh)
#!/bin/bash
 
# Step 1: Check Parameters
if [ $# -lt 2 ]; then
        echo ""
        echo "Usage: sh $0 FirstDay DaysToDownload"
        echo "Example: sh $0 20140825 7, this will download logs for 7 days: 20140825-20140831."
        echo ""
 
        exit
fi
 
# Step 2: Fetch log data
first_day=$1
days_to_download=$2
for ((i=1; i<=${days_to_download}; i++));
do
        (( finished = i - 1))
        (( togo = ${days_to_download} - finished ))
 
        echo ""
        echo "-------"
 
        day=`date -d "${first_day} ${finished} days" +%Y%m%d`
 
        echo "[`date`] Downloading log for ${day}, ${finished} finished, ${togo} to go......"
 
        start_date=`date`
        for ((j=1; j<=3; j++));
        do
            # download logs
            # download logs finished
            if [ $? -eq 0 ]; then
                break
            fi
        done
        end_date=`date`
 
        echo "Finished ${day}. Started at ${start_date}, finished at ${end_date}"
done
 
echo ""
echo "Finished downloading $2 logs ( ${first_day} - ${day} ) !"
echo ""

shell代码模板的更多相关文章

  1. Shell替换

    如果表达式中包含特殊字符,Shell 将会进行替换.例如,在双引号中使用变量就是一种替换,转义字符也是一种替换. #!/bin/bash a= echo -e "Value of a is ...

  2. Shell特殊变量

    $ 表示当前Shell进程的ID,即pid $echo $$ 运行结果 特殊变量列表 变量 含义 $0 当前脚本的文件名 $n 传递给脚本或函数的参数.n 是一个数字,表示第几个参数.例如,第一个参数 ...

  3. shell变量

    定义变量 定义变量时,变量名不加美元符号($),如: variableName="value" 注意,变量名和等号之间不能有空格,这可能和你熟悉的所有编程语言都不一样.同时,变量名 ...

  4. 第一个shell脚本

    打开文本编辑器,新建一个文件,扩展名为sh(sh代表shell),扩展名并不影响脚本执行,见名知意就好. #!/bin/bash echo "Hello World !" &quo ...

  5. shell简介

    Shell作为命令语言,它交互式地解释和执行用户输入的命令:作为程序设计语言,它定义了各种变量和参数,并提供了许多在高级语言中才具有的控制结构,包括循环和分支. shell使用的熟练程度反映了用户对U ...

  6. Shell碎碎念

    1. 字符串如何大小写转换 str="This is a Bash Shell script." 1> tr方式 newstr=`tr '[A-Z]' '[a-z]' < ...

  7. MongoDB学习笔记二—Shell操作

    数据类型 MongoDB在保留JSON基本键/值对特性的基础上,添加了其他一些数据类型. null null用于表示空值或者不存在的字段:{“x”:null} 布尔型 布尔类型有两个值true和fal ...

  8. 使用C#给Linux写Shell脚本

    在这个逼格决定人格,鄙视链盛行的年头,尤其是咱们IT界,请问您今天鄙视与被鄙视的次数分别是多少?如果手中没有一点压箱的本事,那就只有看的份了.今天我们也要提升下自己的格调,学习些脑洞大开的东西,学完之 ...

  9. Linux环境下shell和vim中乱码原因及消除办法

    shell和vim中乱码原因及消除办法 作者:Jack47 在Linux下开发,经常遇到乱码问题:shell或者vim中显示不了中文,或者能够显示,但不能输入中文.每次都是上网去搜,或者同事告诉我一些 ...

随机推荐

  1. svg 标签

    SVG中的’defs’ and ‘use’-可复用的图元定义 在下一个示例中,我使用了defs中的元素之前,定义了如何去展现图元. <?xml version="1.0" s ...

  2. centos中JDK版本冲突的问题

    在centos环境下,我JDK版本安装了jdk6,jdk7.系统还自带了一个JDK7. 我在查看JDK版本是,发现不是我在/etc/profile中配置的. 1:which java 查看Java的命 ...

  3. WordCount 优化版测试小程序实现

    Stage1:代码编写+单元测试 Github地址: https://github.com/245553473/wcPro.git PSP表格: PSP PSP阶段 预估耗时(分钟) 实际耗时(分钟) ...

  4. Spring JDBCTemplate配置使用

    一.开发环境 Windows 10 IntelliJ IDEA 2016.1 旗舰版 JDK1.8 二.项目和数据库结构 项目结构: 数据库(MySQL 5.5.39): /* Navicat MyS ...

  5. 树莓派(Raspberry Pi 3) centos7使用yum命令报错File "/usr/bin/yum", line 30 except KeyboardInterrupt, e:

    使用yum命令报错 File "/usr/bin/yum", line 30 except KeyboardInterrupt, e: ^SyntaxError: invalid ...

  6. ajax上传json串格式的数据的处理 以及 js操作dom的另一种方式

  7. ubuntu - 14.04,如何操作Gnome的任务栏?

    搜索到的答案: in gnome classic you must press both the Alt & Super keys at the same time while right-c ...

  8. Category 分类

    1.Category 1)分类/类别(category): 允许以模块的方式向现有类定义添加新的方法(默认不能添加实例变量).用以扩展自己或他人以前实现的类,使它适合自己的需要. 分类的名称括在类名之 ...

  9. 算法训练 最大的算式(DP)

    问题描述 题目很简单,给出N个数字,不改变它们的相对位置,在中间加入K个乘号和N-K-1个加号,(括号随便加)使最终结果尽量大.因为乘号和加号一共就是N-1个了,所以恰好每两个相邻数字之间都有一个符号 ...

  10. Java—多线程实现PV效果

    前言 还记得今年参加自学操作系统考试,最难分析的就是PV这部分,然而伟大的米老师却用一个放东西吃东西的小例子,把PV讲的栩栩如生,言简意赅.学J2SE时学到了线程部分,里面提到了线程同步,死锁问题等等 ...