`

Shell单个部署客户端

阅读更多
#!/bin/bash

#op2(132)
server1='http://132.121.97.178:9518/sync/'
#192
server2='http://192.168.51.191:9518/sync/'
#172
server3='http://172.20.3.219:9518/sync/'

now_server=''
server_json=''
dir_temp='/data/mondev/mondo/client/'
log_dir='/data/mondev/mondo/client/log/'

#get current server
getCurrentServer(){
result1=`curl --connect-timeout 2 $server1`
if [ "$?" == "0" ] && [ "$result1" != "" ]
then
now_server=$server1
            server_json=$result1
else
result2=`curl --connect-timeout 2 $server2`
if [ "$?" == "0" ] && [ "$result2" != "" ]
then
now_server=$server2
server_json=$result2
else
result3=`curl --connect-timeout 2 $server3`
if  [ "$?" == "0" ] && [ "$result3" != "" ]
then
now_server=$server3
server_json=$result3
else
echo "curl: couldn't connect to server host........"
exit 1
fi
fi
fi

}

#mkdir
makeMulitDir(){
err1=`mkdir -p  $dir_temp`
if [ "$?" != "0" ] || [ ! -d "$dir_temp" ]
then
echo "mkdir $dir_temp  fail............"
exit 1
fi
mkdir -p $log_dir
}

#get file md5
getMd5(){
file_path=$1
file_md5_value=`md5sum $file_path |awk '{print $1}'`
if [ "$?" != "0" ]
    then
echo "get file md5 value has error....... $file_path"
file_md5_value=''
fi
}


#downlaod file
downLoadFile(){
temp_url=$1
down_path1=$2
down_path2=$2".temp"
echo "downloading $down_path1"
msg=`curl $temp_url > $down_path2`
if [ "$?" == "0" ]
then
#chekc md5
if [ -f "$down_path2" ]
then
getMd5 $down_path2
if [ "$file_md5_value" == "$md5val" ]
then
# update file suffix
mv $down_path2 $down_path1
else
echo "downloading file $down_path2  has error............"
fi
else
echo "downloading file $temp_url    has error............"
fi
else
echo "downloading file $temp_url    has error............"
fi
}

#restart mondo

#proc_count="ps -ef|grep magent | grep mondev |grep -v grep|wc -l"
#kill_proc="ps -ef|grep magent|grep mondev | grep -v grep|awk '{print $2}'|xargs kill"
start_script="sh /data/mondev/mondo/client/bin/magent restart"

#kill has exit process
killExitProcess(){
msg2=`ps -ef|grep magent | grep mondev |grep -v grep|wc -l`
if [ "$?" == "0" ] && [ "$msg2" != "" ]
then
count1=`echo $msg2| tr -s " "`
if [ "$count1" != "0" ]
then
msg3=`ps -ef|grep magent|grep mondev | grep -v grep|awk '{print $2}'|xargs kill`
sleep 2
fi
fi

}

#restart
restart(){
echo "begion to restart magent..........."
killExitProcess
sh /data/mondev/mondo/client/bin/magent restart
}

getCurrentServer
makeMulitDir

if [ "$now_server" != "" ] && [ "$server_json" != "" ]
then
echo $now_server

echo $server_json | awk -F[\}]  '{for(i=1;i<=NF;i++)if($i!=""&&$i!=" ")  print$i}' |while read var
do
#echo $var |tr -d ', :{}'|awk -F\" '{print  $2,$6}'
keyval=`echo $var |tr -d ', :{}'|awk -F\" '{print  $2}'`
md5val=`echo $var |tr -d ', :{}'|awk -F\" '{print  $6}'`
filedir=${keyval%/*}
filename=${keyval##*/}
current_dir=''
if [ "$filedir" != "" ]
then
current_dir="${dir_temp}""${filedir}"
else
current_dir="${dir_temp}"
fi

if [ ! -d "$current_dir" ]
    then
mkdir -p $current_dir
fi

current_file="${dir_temp}""${keyval}"
echo "downloading file $current_file"
urltemp="${now_server}""${keyval}"
if [ -f "$current_file" ]
then
#check md5
getMd5 $current_file
if [ "$file_md5_value" != "$md5val" ]
then
#download file
downLoadFile $urltemp $current_file
fi
else
#download file
downLoadFile $urltemp $current_file
fi

sleep 1
done

#chmod +x
chmod -R +x /data/mondev/mondo/client/bin/
chmod -R +x /data/mondev/mondo/client/sh/


restart
else
echo "has error when get server_json..........."
fi








@dianxinguangchang.43F.zhongshanerlu.yuexiuqu.guangzhoushi.guangdongsheng

2016-10-24 17:49
分享到:
评论

相关推荐

    自动部署相关jar包

    结合这两个技术,你可以在服务器端使用SSH2进行自动部署操作,同时通过WebSocket向客户端发送部署进度,创建一个实时反馈的部署系统。客户端可以通过WebSocket接收并显示这些信息,提供给运维人员或开发者一个直观的...

    SSH Secure Shell Client

    总之,SSH Secure Shell Client是IT管理员和开发人员进行远程Linux服务器管理的重要工具,通过它,用户可以高效、安全地执行各种运维任务,无论是web应用的部署、系统的日常维护,还是故障排查,都能得心应手。...

    Unix shell编程

    Shell不仅可以执行单个命令,还可以通过脚本文件组合多个命令,实现自动化任务执行。在Unix/Linux环境中,掌握Shell编程技能是提升工作效率的重要手段。 首先,让我们了解基础的Shell命令。`ls`用于列出目录内容,`...

    kafka单机版自动安装shell脚本

    Kafka单机版自动安装Shell脚本是一个便捷的工具,用于简化Apache Kafka在单个服务器上的部署过程。Apache Kafka是一个分布式流处理平台,它被广泛应用于大数据实时处理、消息传递和日志聚合等领域。这个脚本的目的是...

    ldap-ansible-demo:使用Ansible的LDAP服务器和客户端部署

    这是一个演示如何自动执行简单(和单个)LDAP服务器部署以及如何将另一个实例集成为客户端的演示。 该手册可用于在裸机和基于云的实例(例如Nova Instances(Openstack)和EC2实例(AWS))上进行部署。 2.安装...

    socketio-terminal一个客户端服务器的node模块它就像SSH但通过socket.io通信

    SocketIO-Terminal是一个基于Node.js的客户端-服务器模块,其设计目标是提供类似于Secure Shell (SSH) 的功能,但利用了Socket.IO进行实时双向通信。这个创新的工具使得开发者能够通过Web浏览器远程访问和控制服务器...

    Exchange 2007新功能特性及安装部署III

    在安装部署方面,Exchange 2007引入了基于Web的管理界面——Exchange Management Console (EMC) 和Exchange Management Shell (EMS),提供图形化和命令行两种管理方式。EMC提供直观的用户界面,适合日常管理和快速...

    Redis集群部署

    当单个实例无法满足高可用性、数据冗余或更大的存储需求时,Redis集群(Cluster)成为了解决方案。本教程将详细介绍如何部署Redis集群。 一、Redis集群的基本概念 Redis集群采用分片(Sharding)策略,将数据分散到...

    5-5+我们是如何支撑起上千个Pegasus集群的——后端篇.pdf

    随着内部版本的更新,我们不断优化内存使用,增加了Kerberos认证,改进了C++客户端性能,标准化了部署目录,引入了冷备、指标采集、Meta Server内存泄露修复以及Java客户端优化等功能。 在非功能性的改进方面,我们...

    mqtterminal-server:使用非常低的设置通过MQTT异步运行shell命令

    随着需求的增长,可以通过水平扩展(增加服务器数量)或垂直扩展(增加单个服务器的资源)来提高处理能力。 8. **应用实例** MQTTerminal-Server的应用场景广泛,如远程设备管理、自动化工作流、无人值守环境的...

    mambati-alpha-shell:Mambati alpha外壳

    2. **脚本支持**:除了单个命令外,该shell还支持编写脚本,可以组合多个命令形成复杂的任务流程,实现更高级的自动化操作。 3. **交互性**:Mambati Alpha Shell提供了友好的交互界面,用户可以通过命令行输入命令...

    mosh-launcher:用 PHP 编写的带有单个 SSH 连接的 Mobile Shell 启动器,用于传输 mosh-server 并启动它

    `mosh`(Mobile Shell)是一款面向移动设备的 SSH 客户端,其核心特性包括: 1. **持久连接**:即使在网络状况差时,mosh 也能保持连接,只需在连接恢复时重新同步。 2. **延迟渲染**:键盘输入和屏幕更新之间的...

    puppet-presentation.pdf

    ### Puppet在Linux系统部署中的应用 #### 概述 Puppet是一种强大的自动化工具,主要用于配置管理系统,确保所有服务器...无论是对于单个系统的初始配置还是整个数据中心的管理,Puppet都是一个值得考虑的强大工具。

    Schedulis安装文档.pdf

    - 普通版部署:单个WebServer配合一个或多个ExecutorServer。 - HA部署:多个WebServer配合一个或多个ExecutorServer,通过Nginx实现负载均衡和高可用。 4. **普通版环境部署** - 复制、解压安装包。 - 初始化...

    WinSCP.rar,WinSCP 是一个 Windows 环境下使用的 SSH 的开源图形化 SFTP 客户端

    WinSCP是一款广受欢迎的开源软件,专为Windows用户设计,提供了强大的SSH(Secure Shell)协议下的SFTP(Secure File Transfer Protocol)和SCP(Secure Copy Protocol)文件传输功能。这款工具以其直观的图形用户...

    SVN-server-client-languagePack

    TortoiseSVN是一款非常流行的Windows Shell界面的SVN客户端,它提供了直观的图形用户界面,使得用户可以在Windows资源管理器中直接进行版本控制操作,如提交、更新、查看历史等。1.14.5是其版本号,x64表示它是为64...

    aprs_cron_injector:一个简单的 Bash 脚本,用于将单个 APRS 对象注入到 APRS-IS 主干中

    仅当用户无法证明部署更复杂的 APRS 客户端是合理的时,才应使用此脚本。 如果需要物体以外的额外信标或直接向 RF 发送信标,用户应考虑部署完整的 APRS 系统,例如 aprx ( ) 要使用此脚本,请制作它的本地副本并...

    redis集群搭建及配置.docx

    1. 编写Redis客户端启动shell:可以编写一个简单的shell脚本,调用`redis-cli`命令连接Redis服务器。 2. 启动客户端:使用`redis-cli -h 主服务器IP -p 主服务器端口`命令连接主服务器。 3. 数据操作:在客户端上...

    Python-基于ssh秘钥supervisord的发布系统

    首先,我们需要理解SSH(Secure Shell)是一种加密网络协议,常用于远程登录和其他安全网络服务,特别是文件传输。SSH密钥对包括公钥和私钥,公钥放在服务器上,私钥保留在客户端。通过这种方式,可以实现无密码登录...

    SSH免安装工具

    在提供的压缩包文件“SSH Secure Shell”中,可能包含了一个轻量级的SSH客户端程序,可能支持上述所有功能。用户只需要解压并运行该程序,就可以在Linux系统上便捷地进行远程访问和文件传输,而无需安装额外的SSH...

Global site tag (gtag.js) - Google Analytics