批量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替换
如果表达式中包含特殊字符,Shell 将会进行替换.例如,在双引号中使用变量就是一种替换,转义字符也是一种替换. #!/bin/bash a= echo -e "Value of a is ...
- Shell特殊变量
$ 表示当前Shell进程的ID,即pid $echo $$ 运行结果 特殊变量列表 变量 含义 $0 当前脚本的文件名 $n 传递给脚本或函数的参数.n 是一个数字,表示第几个参数.例如,第一个参数 ...
- shell变量
定义变量 定义变量时,变量名不加美元符号($),如: variableName="value" 注意,变量名和等号之间不能有空格,这可能和你熟悉的所有编程语言都不一样.同时,变量名 ...
- 第一个shell脚本
打开文本编辑器,新建一个文件,扩展名为sh(sh代表shell),扩展名并不影响脚本执行,见名知意就好. #!/bin/bash echo "Hello World !" &quo ...
- shell简介
Shell作为命令语言,它交互式地解释和执行用户输入的命令:作为程序设计语言,它定义了各种变量和参数,并提供了许多在高级语言中才具有的控制结构,包括循环和分支. shell使用的熟练程度反映了用户对U ...
- Shell碎碎念
1. 字符串如何大小写转换 str="This is a Bash Shell script." 1> tr方式 newstr=`tr '[A-Z]' '[a-z]' < ...
- MongoDB学习笔记二—Shell操作
数据类型 MongoDB在保留JSON基本键/值对特性的基础上,添加了其他一些数据类型. null null用于表示空值或者不存在的字段:{“x”:null} 布尔型 布尔类型有两个值true和fal ...
- 使用C#给Linux写Shell脚本
在这个逼格决定人格,鄙视链盛行的年头,尤其是咱们IT界,请问您今天鄙视与被鄙视的次数分别是多少?如果手中没有一点压箱的本事,那就只有看的份了.今天我们也要提升下自己的格调,学习些脑洞大开的东西,学完之 ...
- Linux环境下shell和vim中乱码原因及消除办法
shell和vim中乱码原因及消除办法 作者:Jack47 在Linux下开发,经常遇到乱码问题:shell或者vim中显示不了中文,或者能够显示,但不能输入中文.每次都是上网去搜,或者同事告诉我一些 ...
随机推荐
- C++中的内存重叠问题
内存重叠,直到做到一个笔试题才知道了什么是内存重叠.先上题目吧,是一个淘宝的笔试题,当时有点懵,不知道这个名词是啥子意思. 题目:补充下面函数代码: 如果两段内存重叠,用memcpy函数可能会导致行为 ...
- leetcode 6 ZigZag Converesion
class Solution { public: string convert(string s, int nRows) { if (nRows <= 1) return s; string r ...
- 树莓派(Raspberry Pi 3) centos7 扩容内存卡
在使用Win32DiskImager为一张空白的SD卡刷入新的centos7系统后,发现卡上的可用剩余空间并不大,用df -h查看,根目录下的空间使用率居然是25%,而且总空间也就2G左右.网上查到的 ...
- winfrom浏览器控件
(1)webbrowser 在ie的基础上开发出来的,一般情况下很好用,特殊情况下没法用,一堆坑,h5支持效果不好 使用:直接拖控件就好了 (2)WebKit .NET http://webkitdo ...
- ubuntu重新安装 apache2
$ sudo apt-get --purge remove apache2 $ sudo apt-get --purge remove apache2.2-common $ sudo apt-get ...
- html中img标签的url如何拼接变量
<img id="pic" /> <script type="text/javascript"> var url = "xxx ...
- 高级工程师->架构师
1. 分解等级 技术人员典型的发展路径基本上都是下面的这个模式: 1) 0 ~1年:菜鸟,需要别人手把手来教 2)1 ~ 3年:初级,需要别人带你做 3)3 ~ 5年:高级,能独当一面,可以带初级技术 ...
- Linux更改文件或目录的所有者和所有组
上节我们说了所有者和所有组的概念, 一个文件它的所有者是谁,属于哪个组的,不同的角色对其的操作权限是不一样的,详细信息请看上节Linux权限管理 这里我们主要说的是怎么去改变这个文件或目录的所有者和所 ...
- 微信Dat文件解码
最近在整理磁盘文件,因为经过一段时间的蹂躏后,磁盘实在是太多东西了,不整理一下,简直对不住我的SSD好嘛.偶然发现磁盘中某公司的文件夹占用空间简直不能再大,那可是我的C盘啊,合计才119GB的SSD空 ...
- From表单提交刷新页面?
form表单提交跳转 写作原因: 楼主的html水平一般,偶然想起周围人常说的form表单提交会刷新页面,闲来无事,就想想其中的原因 想来想去为什么会刷新,猜想了以下几条 1.先提交数据,等服务器 ...