1.配置集群间免密登录

(1)配置host:vim /etc/hosts

(2)生成公钥 :ssh-keygen -t rsa -P ''

  这时会提示生成的公钥的存放地址,直接回车,公钥生成成功

(3)cat id_rsa.pub 将生成的公钥添加到需要登录的机器的authorized_keys文件里

然后直接ssh crawler01即可登录

2.一键启动脚本

 #!/bin/bash

 #程序包名称
ZIP_NAME="aikucun-distributed-spider-crawler.zip" zip_exist(){
if [ ! -f "$ZIP_NAME" ]
then
return
else
return
fi
} backup(){
echo "备份方法执行..."
cd ~/crawler
if zip_exist; then
mv $ZIP_NAME ~/jar_bak
echo "crawler程序包备份完成!"
else
echo "$ZIP_NAME 不存在,无法备份,请检查!"
fi
} check_single(){
if [ ! -f "bin/single.sh" ]
then
return
else
return
fi
} stop(){
echo "停止方法执行..."
if check_single; then
sh bin/single.sh stop
CURRENT_PATH=`cd "$(dirname "$")"; pwd`
echo "当前所在目录:$CURRENT_PATH"
rm -rf ~/crawler/*
echo "已清除旧程序"
else
echo "single脚本文件不存在,无法停止程序,请检查程序结构是否完整!"
exit 1
fi
} start(){
echo "开始方法执行..."
cd ~/jar_new
if zip_exist; then
mv $ZIP_NAME ~/crawler
cd ~/crawler
unzip -q $ZIP_NAME
echo "解压程序包完成!"
cd bin
dos2unix single.sh
echo "格式转换完成!"
sh single.sh start
else
echo "$ZIP_NAME 不存在,程序无法发布,请检查!"
exit 1
fi
}
backup
stop
star

3.上传一键启动脚本upload.sh

 #!/bin/bash

 #取当前目录
BASE_PATH=`cd "$(dirname "$")"; pwd` crawler_list="
crawler02
crawler03
crawler04
crawler05
crawler06
crawler07
crawler08
crawler09
crawler10
crawler11
crawler12
crawler13
crawler14
crawler15
"
for i in $crawler_list
do
echo "正在上传一键启动脚本至$i"
scp $BASE_PATH/publish_crawler.sh $i:~
echo "$i机器上传完成"
done

4.一键发布脚本

 #!/bin/bash

 #取当前目录
BASE_PATH=`cd "$(dirname "$")"; pwd`
SHELL_NAME="publish_crawler.sh" crawler_list="
crawler02
crawler03
crawler04
crawler05
crawler06
crawler07
crawler08
crawler09
crawler10
crawler11
crawler12
crawler13
crawler14
crawler15
"
for i in $crawler_list
do
echo "正在上传程序包至$i"
scp $BASE_PATH/crawler/aikucun-distributed-spider-crawler.zip $i:~/jar_new
echo "登录并执行一键启动脚本"
ssh $i "sh $SHELL_NAME"
done

5.通用脚本优化

(1)上传一键启动脚本到相应的服务器的脚本

(2)一键启动脚本

(3)一键发布脚本

 #!/bin/bash

 #取当前目录
BASE_PATH=`cd "$(dirname "$")"; pwd` SERVER_LIST="" upload(){
echo "上传服务器列表:$SERVER_LIST"
for i in $SERVER_LIST
do
echo "正在上传一键启动脚本至$i"
scp $BASE_PATH/publish.sh $i:~
echo "$i机器上传完成"
done
} case "$1" in crawler)
SERVER_LIST="
crawler02
crawler03
crawler04
crawler05
crawler06
crawler07
crawler08
crawler09
crawler10
crawler11
crawler12
crawler13
crawler14
crawler15
"
upload
;;
transport)
SERVER_LIST="
transport01
transport02
transport03
transport04
transport05
transport06
"
upload
;;
storage)
echo "尚未集成,敬请期待!"
;;
*)
echo "available operations: [crawler|transport|storage]"
exit
;;
esac
 #!/bin/bash

 #程序包名称
APP_NAME=$
ZIP_NAME="aikucun-distributed-spider-$APP_NAME.zip"
APP_PATH=$APP_NAME zip_exist(){
if [ ! -f "$ZIP_NAME" ]
then
return
else
return
fi
} backup(){
echo "备份方法执行..."
cd ~/$APP_PATH
if zip_exist; then
mv $ZIP_NAME ~/jar_bak
echo "$APP_NAME 程序包备份完成!"
else
echo "$ZIP_NAME 不存在,无法备份,请检查!"
fi
} check_single(){
if [ ! -f "bin/single.sh" ]
then
return
else
return
fi
} stop(){
echo "停止方法执行..."
if check_single; then
sh bin/single.sh stop
CURRENT_PATH=`cd "$(dirname "$")"; pwd`
echo "当前所在目录:$CURRENT_PATH"
rm -rf ~/$APP_PATH/*
echo "已清除旧程序"
else
echo "single脚本文件不存在,无法停止程序,请检查程序结构是否完整!"
exit 1
fi
} start(){
echo "开始方法执行..."
cd ~/jar_new
if zip_exist; then
mv $ZIP_NAME ~/$APP_PATH
cd ~/$APP_PATH
unzip -q $ZIP_NAME
echo "解压程序包完成!"
cd bin
dos2unix single.sh
echo "格式转换完成!"
sh single.sh start
else
echo "$ZIP_NAME 不存在,程序无法发布,请检查!"
exit 1
fi
} case "$1" in crawler|transport|storage)
backup
stop
start
;;
*)
echo "available operations: [crawler|transport|storage]"
exit 1
;;
esac
 #!/bin/bash

 #取当前目录
BASE_PATH=`cd "$(dirname "$")"; pwd`
SHELL_NAME="publish.sh"
APP_NAME=$ SERVER_LIST="init" execute(){
echo "服务器列表:$SERVER_LIST"
echo "应用名称: $APP_NAME"
for i in $SERVER_LIST
do
echo "正在上传 $APP_NAME 程序包至$i"
scp $BASE_PATH/$APP_NAME/aikucun-distributed-spider-$APP_NAME.zip $i:~/jar_new
echo "登录并执行一键启动脚本"
ssh $i "sh $SHELL_NAME $APP_NAME"
done
} case "$1" in crawler)
SERVER_LIST="
crawler02
crawler03
crawler04
crawler05
crawler06
crawler07
crawler08
crawler09
crawler10
crawler11
crawler12
crawler13
crawler14
crawler15
"
execute
;;
transport)
SERVER_LIST="
transport01
transport02
transport03
transport04
transport05
transport06
"
execute
;;
storage)
echo "尚未集成,敬请期待!"
;;
*)
echo "available operations: [crawler|transport|storage]"
exit
;;
esac

6.在原来的基础上进一步优化,增加一键停止功能

(1)上传发布脚本到集群各个服务器的脚本

#!/bin/bash

#取当前目录
BASE_PATH=`cd "$(dirname "$")"; pwd` SERVER_LIST="" upload(){
echo "上传服务器列表:$SERVER_LIST"
for i in $SERVER_LIST
do
echo "正在上传一键启动脚本至$i"
scp $BASE_PATH/publish.sh $i:~
echo "$i机器上传完成"
done
} case "$1" in crawler)
SERVER_LIST="
crawler02
crawler03
crawler04
crawler05
crawler06
crawler07
crawler08
crawler09
crawler10
crawler11
crawler12
crawler13
crawler14
crawler15
crawler16
crawler17
"
upload
;;
transport)
SERVER_LIST="
transport01
transport02
transport03
transport04
transport05
transport06
transport07
transport08
"
upload
;;
storage)
SERVER_LIST="
storage01
storage02
storage03
storage04
"
upload
;;
controller)
SERVER_LIST="
controller01
controller02
controller03
"
upload
;;
*)
echo "available operations: [crawler|transport|storage|controller]"
exit
;;
esac

(2)发布脚本

#!/bin/bash

#程序包名称
APP_NAME=$
ZIP_NAME="aikucun-distributed-spider-$APP_NAME.zip"
APP_PATH=$APP_NAME zip_exist(){
if [ ! -f "$ZIP_NAME" ]
then
return
else
return
fi
} backup(){
echo "备份方法执行..."
cd ~/$APP_PATH
if zip_exist; then
mv $ZIP_NAME ~/jar_bak
echo "$APP_NAME 程序包备份完成!"
else
echo "$ZIP_NAME 不存在,无法备份,请检查!"
fi
} check_single(){
if [ ! -f "bin/single.sh" ]
then
return
else
return
fi
} stop(){
echo "停止方法执行..."
cd ~/$APP_PATH
if check_single; then
sh bin/single.sh stop
CURRENT_PATH=`cd "$(dirname "$")"; pwd`
echo "当前所在目录:$CURRENT_PATH"
else
echo "single脚本文件不存在,无法停止程序,请检查程序结构是否完整!"
exit
fi
} start(){
echo "开始方法执行..."
rm -rf ~/$APP_PATH/*
echo "已清除旧程序"
cd ~/jar_new
if zip_exist; then
mv $ZIP_NAME ~/$APP_PATH
cd ~/$APP_PATH
unzip -q $ZIP_NAME
echo "解压程序包完成!"
cd bin
dos2unix single.sh
echo "格式转换完成!"
sh single.sh start
else
echo "$ZIP_NAME 不存在,程序无法发布,请检查!"
exit 1
fi
} case "$1" in crawler|transport|storage|controller)
if [ "$2" == 'stop' ]; then
stop
else
backup
stop
start
fi
;;
*)
echo "available operations: [crawler|transport|storage|controller]"
exit 1
;;
esac

(3)一键发布执行脚本

#!/bin/bash

#取当前目录
BASE_PATH=`cd "$(dirname "$")"; pwd`
SHELL_NAME="publish.sh"
APP_NAME=$
ACT=$ SERVER_LIST="init" execute(){
echo "服务器列表:$SERVER_LIST"
echo "应用名称: $APP_NAME"
for i in $SERVER_LIST
do
echo "正在上传 $APP_NAME 程序包至$i"
scp $BASE_PATH/$APP_NAME/aikucun-distributed-spider-$APP_NAME.zip $i:~/jar_new
echo "登录并执行一键 $ACT 执行脚本"
ssh $i "sh $SHELL_NAME $APP_NAME $ACT"
done
} case "$1" in crawler)
SERVER_LIST="
crawler02
crawler03
crawler04
crawler05
crawler06
crawler07
crawler08
crawler09
crawler10
crawler11
crawler12
crawler13
crawler14
crawler15
crawler16
crawler17
"
execute
;;
transport)
SERVER_LIST="
transport01
transport02
transport03
transport04
transport05
transport06
transport07
transport08
"
execute
;;
storage)
SERVER_LIST="
storage01
storage02
storage03
storage04
"
execute
;;
controller)
SERVER_LIST="
controller01
controller02
"
execute
;;
*)
echo "available operations: [crawler|transport|storage|controller]"
exit
;;
esac

一键发布shell脚本的更多相关文章

  1. CentOS 6一键系统优化 Shell 脚本

    CentOS 6一键系统优化 Shell 脚本 脚本的内容如下: #!/bin/bash#author suzezhi#this script is only for CentOS 6#check t ...

  2. centos下的redis一键安装shell脚本

    #!/bin/bash yum install cpp binutils glibc-kernheaders glibc-common glibc-devel gcc make wget #安装依赖库 ...

  3. 该死的端口占用!教你用 Shell 脚本一键干掉它!

    1. 前言 大家好,我是安果! 在 Web 开发中,经常会遇到「端口被占用」的场景 常规解决方案是: 使用 lsof -i 命令查询占用端口的进程 PID 利用 kill -9 PID 干掉目标进程 ...

  4. 分享两个实用的shell脚本

    各位,早上好啊~ 发现许久没有分享过技术文章了,今天分享两个部署项目时候比较实用的shell脚本 一键部署shell脚本 由于个人部署,会习惯把jar放到lib目录下面,如果你没有这个习惯,可以适当做 ...

  5. mac链接linux终端,shell脚本发布代码

    项目的业务需求:从mac端直接连上linux服务终端,并发布相关的代码 一.使用ssh链接上linux服务端 1.cd ~/.ssh 2.vi config,按照下面的内容配置config文件,然后: ...

  6. 使用 shell 脚本实现 LANMP 一键安装

    使用 shell 脚本来实现 LANMP 系统的一键安装.使用的操作系统是 CentOS 6 ,不区分 32 位和 64 位,要求机器可以连通互联网.支持 LAMP 和 LNMP ,MySQL 支持 ...

  7. 使用expect脚本语言写一键发布服务(代码发布、所有服务重启)

    互联网服务有很多台服务,但是在上线的时候需要将这些服务版本都更新与个个都重启,下面的脚本语言,就是一键发布服务~ 1.在/home/weihu/deploy/ 目录下建下publish .publis ...

  8. Centos 6.4上面用Shell脚本一键安装vsftpd

    Centos 6.4上面用Shell脚本一键安装vsftpd install.sh #!/bin/bash if [ `uname -m` == "x86_64" ];then m ...

  9. Centos 6.4上面用Shell脚本一键安装mysql 5.6.15

    Centos 6.4上面用Shell脚本一键安装mysql 5.6.15  #!/bin/bash if [ `uname -m` == "x86_64" ];then machi ...

随机推荐

  1. -bash: ./centos-7.6.sh: /bin/bash^M: bad interpreter问题解决

    在windows下保存了一个脚本文件,用ssh上传到centos,添加权限执行nginx提示没有那个文件或目录.shell脚本放到/etc/init.d/目录下,再执行/etc/init.d/ngin ...

  2. Mongodb操作-更新操作符

    1.$inc 用法:{$inc:{field:value}} 作用:对一个数字字段的某个field增加value 示例:将name为chenzhou的学生的age增加5 > db.student ...

  3. OCP协议_电信特殊协议

    OCP(Online Charging Protocol)协议——在线计费协议(也称为AAA协议),是中国电信(文中以中国电信为主)充分研究国内外在线计费协议,基于中国电信自己在线计费的需求,参考3G ...

  4. 同步windows时间到linux服务器

    输入date -R 查看系统时间 输入命令  ntpdate time.windows.com 同步windows时间到linux

  5. package+explorer不显示项目的问题

    昨天遇到了这个问题,百度了一下,怎么搞的都有,但是感觉都不理想,晚上的时候才在网上又发现这个方法,今天试了一下,效果还不错,分享一下. 点击 Window ---> Close All Pers ...

  6. beautifulsoup4 用法一二

    声明一个beautifulsoup4对象 bs = ( url,//路由 html_parser,//解析html代码 encoding//编码)//另一种请求解析方法 import requests ...

  7. thinkPHP5.0.22初体验---request相关用法

    如果浏览器要返回美观排列的json数据,可以安装火狐浏览器的插件 返回XML的数据格式 渲染模板的用法 return $this->fetch('index/index2')效果 扒掉stirp ...

  8. layer 1.8.5 引用样式失效

    在layer.min.js里,默认引用的官网的样式,目前,网址失效.所以使用本地的样式即可. 将e后面的网址去除,即使用本地的样式.

  9. jquery input选择器 语法

    jquery input选择器 语法 作用::input 选择器选取表单元素.该选择器同样适用于 <button> 元素.大理石平台价格表 语法:$(":input") ...

  10. Python天天学_01_基础1

    Python_day_01 金角大王:http://www.cnblogs.com/alex3714/articles/5465198.html ------Python是一个优雅的大姐姐 学习方式: ...