shell——记录个人脚本的一个进阶

该脚本中运用到工作中常用的shell语法,琐碎的语法结合起来可以帮助处理工作,解放人力。

主要常用的shell知识点:

  1. 判断参数是否存在和判断参数个数
  2. 声明函数
  3. 判断字符串相等
  4. 判断字符串包含
  5. 判断数组内容和数组个数,并循环数组
  6. if多条件语法
  7. sed

记录该脚本,是为了记录一些基础语法,未来忘了可以翻阅。 把基础的语法运用得当,更好的协助运维的工作。脚本只适用一些特殊需求。

#!/bin/bash

# 2017/1/11

#适用添加m站点的脚本。 将域名 改变成目录代理的方式。

LIST=`echo "$1" | cut -d. -f1`

LISTER=`echo "$1" | cut -d. -f2`

oldnip=`echo "$3" | sed ‘s/\// /g‘`

nip=($oldnip)

PORT="$2"

HOST=$(hostname)

#判断是否在nginx服务器主机上执行,并由于目录不一致,而声明了两个不同变量

if [ $HOST = "tnginx101" ];then

ROUTE="/app/nginx"

elif [ $HOST = "tnginx102" ];then

ROUTE="/usr/local/nginx"

else

echo "$HOST not nginx proxy"

exit 2

fi

DIRECTORY="/app/shell/mtemplate/msite"

TEMPLATE="/app/shell/mtemplate"

MPROXY="$ROUTE/conf/Directory"

#判断参数个数是否正确

if [ -z $1 ] && [ -z $2 ] && [ -z $3 ];then

echo "Please input three arguments"

echo "Usage: $basename$0 content.m.mallcoo.cn 9001 web101/web102"

exit 2

fi

if [ $# -ne 3 ];then

echo "input arguments error"

exit 2

fi

if [ ! -d $MPROXY ];then

echo "not exist $MPROXY"

exit 3

fi

if [ ! -d $DIRECTORY ] ;then

echo "not exist "$DIRECTORY""

exit 2

fi

upstream_http(){

if [ $LISTER = "m" ];then

cat $TEMPLATE/upstream_template > $DIRECTORY/Server-Port.conf

sed -i ‘s/template_template_http/‘$LIST‘_m_http/g‘ $DIRECTORY/Server-Port.conf

if [ ${#nip[@]} -gt 1 ];then

for i in ${nip[*]};do

sed -i ‘/upstream/a\    server ‘$i‘:‘$PORT‘ weight=2 max_fails=2 fail_timeout=30s;‘ $DIRECTORY/Server-Port.conf

done

elif [ ${#nip[@]} -eq 1 ];then

sed -i ‘/upstream/a\    server ‘$nip‘:‘$PORT‘ weight=2 max_fails=2 fail_timeout=30s;‘ $DIRECTORY/Server-Port.conf

else

echo "please confirm it "

exit 2

fi

cat $DIRECTORY/Server-Port.conf >> $MPROXY/Server-Port.conf

fi

#匹配域名 第二节 包含api的字符。如content.api.mallcoo.cn

if [[ $LISTER =~ "api" ]];then

cat $TEMPLATE/upstream_template > $DIRECTORY/Server-Port.conf

sed -i ‘s/template_template_http/‘$LIST‘_api_http/g‘ $DIRECTORY/Server-Port.conf

if [ ${#nip[@]} -gt 1 ];then

for i in ${nip[*]};do

sed -i ‘/upstream/a\    server ‘$i‘:‘$PORT‘ weight=2 max_fails=2 fail_timeout=30s;‘ $DIRECTORY/Server-Port.conf

done

elif [ ${#nip[@]} -eq 1 ];then

sed -i ‘/upstream/a\    server ‘$nip‘:‘$PORT‘ weight=2 max_fails=2 fail_timeout=30s;‘ $DIRECTORY/Server-Port.conf

else

echo "please confirm it "

exit 2

fi

cat $DIRECTORY/Server-Port.conf >> $MPROXY/Server-Port.conf

fi

}

#追加 location_http

location_http(){

if [ $LISTER = "m" ];then

cat $TEMPLATE/location_template > $DIRECTORY/Http.conf

sed -i ‘s/mould\/mould/a\/‘$LIST‘/g‘ $DIRECTORY/Http.conf

sed -i ‘s/template_template_http/‘$LIST‘_m_http/g‘ $DIRECTORY/Http.conf

cat $DIRECTORY/Http.conf >> $MPROXY/Http.conf

fi

if [[ $LISTER =~ "api" ]];then

cat $TEMPLATE/location_template > $DIRECTORY/Http.conf

sed -i ‘s/mould\/mould/api\/‘$LIST‘/g‘ $DIRECTORY/Http.conf

sed -i ‘s/template_template_http/‘$LIST‘_api_http/g‘ $DIRECTORY/Http.conf

cat $DIRECTORY/Http.conf >> $MPROXY/Http.conf

fi

}

upstream_http

location_http

时间: 2024-10-06 15:31:29

shell——记录个人脚本的一个进阶的相关文章

shell vs python脚本监控http请求

各写一个shell和python脚本来监控http请求,并在服务不可用的时候重启服务. 监控的连接为: http://192.168.1.101:5022/product http://192.168.1.101:5024/module shell脚本如下,配合crontab计划任务每一分钟执行一次检查: #!/bin/bash # This shell is used to moniter 192.168.1.101 port 5022 & 5024 date  #在crontab里用来记录l

Linux Shell 运维脚本功底积累

1.删除Linux远程用户连接会话 [[email protected] logs]# w 10:45:28 up 15 days, 16:23, 4 users, load average: 0.00, 0.00, 0.00 USER TTY FROM [email protected] IDLE JCPU PCPU WHAT root tty1 - Sun21 4days 0.00s 0.00s -bash root pts/0 192.168.1.2 09:11 0.00s 0.07s 0

Shell入门之脚本管理学习笔记

1.shell介于操作系统与用户之间,负责解释命令行 2./etc/shells 记录了系统支持的有效登录的shell 3./etc/passwd 最后一位可以看到用户默认的shell 4.直接输入shell的名称 可以切换shell 5.shell命令的记录可以用history查看 history -c 清除 历史命令存放在.bash_history文件中 6.shell的指令可以用 alias 别名 = 实际名 来替换 取消则用 unalias 别名 7.shell变量 <1>定义变量 变

Shell编程(脚本)的常用命令和语句

一些常用的Shell编程(脚本)命令和语句,可以满足一般需求. 接收到的命令参数: 参数个数: $# 参数值: 命令本身:$0 第一个参数:$1 第二个参数:$2 -- 退出命令: exit echo命令: 换行: echo 输出后不换行: echo -n "请选择(y/n)?" 利用转义符号输出双引号: echo "欢迎使用\"正式服务器\"部署工具." 输出中带变量: echo "即将部署项目:$project_name"

Shell执行将脚本里的变量打印到指定日志文件

首先需要定位获取任务的运行日志或者报错信息,才能定位问题. 通过shell调用有些脚本的话,日志信息会打印在shell里.不过也有用户在shell里调用正常,但是到crontab调用的时候就出错并且没日志了. 针对这种情况,可以在crontab里把任务执行的输出记录下来,后续出了问题可以到日志文件里获取任务的日志.可以参考:  abc -f xxx.sql >> /home/admin/logs/xxx.log 2>&1  待续...

Shell编程(脚本)的经常使用命令和语句

一些经常使用的Shell编程(脚本)命令和语句,能够满足一般需求. 接收到的命令參数: 參数个数: $# 參数值: 命令本身:$0 第一个參数:$1 第二个參数:$2 -- 退出命令: exit echo命令: 换行: echo 输出后不换行: echo -n "请选择(y/n)?" 输出后不换行,并把光标移到最左(以便下次输出覆盖当前行) echo -ne "$i\r" 利用转义符号输出双引號: echo "欢迎使用\"正式server\&qu

Java调用Shell命令和脚本

1.介绍 有时候我们在Linux中运行Java程序时,需要调用一些Shell命令和脚本.而Runtime.getRuntime().exec()方法给我们提供了这个功能,而且Runtime.getRuntime()给我们提供了以下几种exec()方法: Process exec(String command) 在单独的进程中执行指定的字符串命令. Process exec(String[] cmdarray) 在单独的进程中执行指定命令和变量. Process exec(String[] cmd

shell调用python脚本,并且向python脚本传递参数

1.shell调用python脚本,并且向python脚本传递参数: shell中: python test.py $para1 $para2 python中: import sys def main($canshu1, $canshu2) ..... main(sys.argv[1], sys.argv[2]) 2.使用shell调用python中的函数: python脚本如下: test.py: import ConfigParser config = ConfigParser.Config

Java调用Shell命令和脚本,致力于hadoop/spark集群

前言 说明的是,本博文,是在以下的博文基础上,立足于它们,致力于我的大数据领域! http://kongcodecenter.iteye.com/blog/1231177 http://blog.csdn.net/u010376788/article/details/51337312 http://blog.csdn.net/arkblue/article/details/7897396 第一种:普通做法 首先,编号写WordCount.scala程序. 然后,打成jar包,命名为WC.jar.