在独立开发一个跨云的集群应用的时候,突然发现以往使用的jekins、shell脚本完全不够用了,部署一个版本效率低下到要死要死了。于是觉得非常有必要手写一个bat脚本,去操作集群在linus上的jar应用,虽然忙乎了一个晚上,但是部署效率直线上升。
windows上传和操作应用使用到两个工具分别是pscp和plink
pscp,就像linux的scp命令指令如下,
Usage: pscp [options] [user@]host:source target
pscp [options] source [source...] [user@]host:target
pscp [options] -ls [user@]host:filespec
Options:
-V print version information and exit
-pgpfp print PGP key fingerprints and exit
-p preserve file attributes
-q quiet, don't show statistics
-r copy directories recursively
-v show verbose messages
-load sessname Load settings from saved session
-P port connect to specified port
-l user connect with specified username
-pw passw login with specified password
-1 -2 force use of particular SSH protocol version
-4 -6 force use of IPv4 or IPv6
-C enable compression
-i key private key file for user authentication
-noagent disable use of Pageant
-agent enable use of Pageant
-hostkey aa:bb:cc:...
manually specify a host key (may be repeated)
-batch disable all interactive prompts
-no-sanitise-stderr don't strip control chars from standard error
-proxycmd command
use 'command' as local proxy
-unsafe allow server-side wildcards (DANGEROUS)
-sftp force use of SFTP protocol
-scp force use of SCP protocol
-sshlog file
-sshrawlog file
log protocol details to a file
plink就是linux的ssh,可以在window下远程执行linux的shell脚本,指令如下:
Usage: pscp [options] [user@]host:source target
pscp [options] source [source...] [user@]host:target
pscp [options] -ls [user@]host:filespec
Options:
-V print version information and exit
-pgpfp print PGP key fingerprints and exit
-p preserve file attributes
-q quiet, don't show statistics
-r copy directories recursively
-v show verbose messages
-load sessname Load settings from saved session
-P port connect to specified port
-l user connect with specified username
-pw passw login with specified password
-1 -2 force use of particular SSH protocol version
-4 -6 force use of IPv4 or IPv6
-C enable compression
-i key private key file for user authentication
-noagent disable use of Pageant
-agent enable use of Pageant
-hostkey aa:bb:cc:...
manually specify a host key (may be repeated)
-batch disable all interactive prompts
-no-sanitise-stderr don't strip control chars from standard error
-proxycmd command
use 'command' as local proxy
-unsafe allow server-side wildcards (DANGEROUS)
-sftp force use of SFTP protocol
-scp force use of SCP protocol
-sshlog file
-sshrawlog file
log protocol details to a file
C:\Users\Administrator>D:\tool\seo_deploy\plink
Plink: command-line connection utility
Release 0.72
Usage: plink [options] [user@]host [command]
("host" can also be a PuTTY saved session name)
Options:
-V print version information and exit
-pgpfp print PGP key fingerprints and exit
-v show verbose messages
-load sessname Load settings from saved session
-ssh -telnet -rlogin -raw -serial
force use of a particular protocol
-P port connect to specified port
-l user connect with specified username
-batch disable all interactive prompts
-proxycmd command
use 'command' as local proxy
-sercfg configuration-string (e.g. 19200,8,n,1,X)
Specify the serial configuration (serial only)
The following options only apply to SSH connections:
-pw passw login with specified password
-D [listen-IP:]listen-port
Dynamic SOCKS-based port forwarding
-L [listen-IP:]listen-port:host:port
Forward local port to remote address
-R [listen-IP:]listen-port:host:port
Forward remote port to local address
-X -x enable / disable X11 forwarding
-A -a enable / disable agent forwarding
-t -T enable / disable pty allocation
-1 -2 force use of particular protocol version
-4 -6 force use of IPv4 or IPv6
-C enable compression
-i key private key file for user authentication
-noagent disable use of Pageant
-agent enable use of Pageant
-noshare disable use of connection sharing
-share enable use of connection sharing
-hostkey aa:bb:cc:...
manually specify a host key (may be repeated)
-sanitise-stderr, -sanitise-stdout, -no-sanitise-stderr, -no-sanitise-stdout
do/don't strip control chars from standard output/error
-no-antispoof omit anti-spoofing prompt after authentication
-m file read remote command(s) from file
-s remote command is an SSH subsystem (SSH-2 only)
-N don't start a shell/command (SSH-2 only)
-nc host:port
open tunnel in place of session (SSH-2 only)
-sshlog file
-sshrawlog file
log protocol details to a file
-shareexists
test whether a connection-sharing upstream exists
window的expect命令不像linux的那么好用,可能是我没掌握好,下载地址也很不好找,使用的时候也跟linux不一样;所以在执行pscp的时候,有个嵌入命令(yes/no),可以在执行pscp命令前加上 echo y| pscp .... ,这样居然也能达到linux expect命令的效果。
window的start命令,类似linux的nohup,异步执行命令,跟pscp、plink结合使用,这样就实行多线程传输应用和远程执行linux脚本
还是贴代码吧,部署代码如下
@echo off
for /f "eol=/delims=" %%s in (services.txt) do (
for /f "tokens=1,2,3,4 delims= " %%a in ('echo %%s') do (
start /b cmd /c "echo y|D:\tool\seo_deploy\pscp -scp -v -q -l %%c -pw %%d -P %%b E:\seo\seo
\target\seo-0.0.1-SNAPSHOT.jar root@%%a:/opt/seo.jar & D:\tool\seo_deploy\plink -no-antispoof -l %%c -pw %%d -P
%%b %%a ps -ef^|grep seo ^| awk '{if($0 ~/java/) print $2}' ^| xargs kill -9 ^| rm -rf ^/root^/seo.jar
^/root^/seo.log ^| mv ^/opt^/seo.jar ^/root^/ & D:\tool\seo_deploy\plink -no-antispoof -l %%c -pw %%d -P %%b %%a
nohup java -DisProducer=true -Dshell='ifdown ppp0^,ifup ppp0' -DdesKey=^"AAAAA123^" -DipChannel=^"aaa^" -
DredisHostName=^"127.0.0.1^" -Xms128m -Xmx640m -server -XX:^+UseParNewGC -XX:^+UseConcMarkSweepGC -XX:^
+CMSClassUnloadingEnabled -XX:^+CMSScavengeBeforeRemark -XX:^+DisableExplicitGC -Djava.awt.headless=true -jar
seo.jar ^>^> seo.log 2^>^&1 ^&"
echo ============我是分割线============
)
)
:cmd /k
pause
services.txt为服务器列表
格式如下:
服务器ip1 22 root pwd
服务器ip2 22 root pwd
分享到:
相关推荐
《NC6+WAS安装及部署完全手册》是针对企业级应用服务器WebSphere Application Server (WAS)与NC6系统在Windows和Linux环境下的详细安装与部署指南。本手册旨在帮助IT专业人员理解并掌握这两种不同操作系统环境下NC6...
在windows上配置iscsi initiator 在linux上配置iscsi initiator 第4讲 基于iscsi 在安全方面相关设定 课程目标: 如何管理和使用iscsi存储网络 initiator主机以ip认证方式获取iscsi target资源 initiator主机...
本篇文章将详细讲解如何在Linux和Windows环境中部署Solr。 **一、Solr在Linux环境中的部署** 1. **系统准备**:确保你的Linux系统(如Ubuntu或CentOS)已经安装了Java运行环境(JRE)和Java开发工具集(JDK)。你...
在IT行业中,Linux系统是许多服务器和开发环境的基础,而Kubernetes(简称k8s)作为容器编排的领头羊,已经成为了现代云原生应用部署的关键技术。本教程将详细阐述如何利用Linux环境,一键部署k8s 1.14.1集群。 一...
以下是一份详细的步骤指南,帮助你理解如何在WebLogic Server上配置和部署集群项目。 首先,你需要登录到WebLogic Server管理控制台。这通常通过访问`http://localhost:7001/console`完成,其中`localhost`是服务器...
在Linux环境中,安装Memcached通常通过包管理器进行,如在Ubuntu上使用`apt-get`,在CentOS上使用`yum`。安装完成后,通过`systemctl`或`service`命令来启动、停止和管理服务。 1. **安装**: - Ubuntu: `sudo apt...
尽管如此,Docker也提供了对Windows和macOS的支持,这是通过在宿主机上运行一个轻量级的Linux虚拟机来实现的。 在开始安装Docker之前,需要准备一个Linux环境,文中以CentOS虚拟机为例。首先需要确保网络畅通,这...
虽然给定内容主要聚焦于 Windows 平台上的 MySQL 安装与配置,但构建跨平台的 MySQL 集群还需要了解 Linux 环境下的部署方法。下面简要介绍 Linux 下 MySQL 集群的配置步骤: **1. 安装 MySQL Server** - 在 ...
综上所述,Websphere 8 for Linux集群的配置是一项复杂但极具价值的工作,它不仅涉及到软件的安装与配置,更要求对系统架构、网络通信、资源管理和安全策略有深刻的理解和把握。通过遵循官方指南,结合实践经验,...
尚观Linux集群架构师课程深度解析 尚观科技推出的Linux集群架构师课程,是一门集技术深度与实战经验于一体的高端IT培训课程。该课程聚焦于Linux集群架构的精深研究,旨在培养具备全面技能和实战经验的Linux集群架构...
“Linux-minikube在macOS/Linux和Windows上实现了本地Kubernetes集群”这一标题揭示了Minikube的主要功能,即为不同操作系统(包括macOS、Linux和Windows)提供一个本地运行的Kubernetes(K8S)集群环境。...
要启动JBoss,只需运行bin目录下的run.bat(Windows系统)或run.sh(Unix/Linux系统)文件。启动成功后,访问http://localhost:8080可以检查服务器是否正常运行。 【部署流程】 在JBoss中部署应用程序相当直观,只...
1. 首先,在选定的母盘机器上安装Linux集群,注意避免克隆软件对正常安装造成干扰,如果存在多系统共存,建议先安装Windows,再安装RHEL 4,以便更好地管理和引导。 2. 在创建分区时,不必单独设立BOOT分区,便于在...
**Apache+Tomcat+Linux集群和负载均衡**主要指通过Apache作为前端反向代理服务器,Tomcat作为后端应用服务器,同时利用Linux系统强大的稳定性和安全性来构建一个能够有效分发请求、提高响应速度和服务质量的Web应用...
集群配置的后续步骤通常包括配置应用程序服务器、定义集群、设置负载均衡策略、安装和部署应用程序以及配置故障转移和健康检查机制。每个步骤都需要精确的配置以确保集群的稳定性和高可用性。Websphere 8提供了丰富...
推荐的做法是将ElasticSearch部署在专用的服务器上,而不是与应用程序共享服务器资源。若有多台服务器,则应在每台服务器上都解压一份ElasticSearch,这样每一台服务器就构成了ElasticSearch集群中的一个节点。 - ...
本文将详细介绍如何在Windows上配置Nginx以实现负载均衡集群。 首先,我们需要安装Nginx。可以从Nginx官方网站(如http://sysoev.ru/nginx/)下载适用于Windows的版本,例如nginx-0.8.50.zip。将下载的zip文件解...