1 Star 0 Fork 7

guoguo/vipsvc

forked from LR/vipsvc 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
vip.js 2.48 KB
一键复制 编辑 原始数据 按行查看 历史
LR 提交于 2019-10-03 15:51 . init
//*****************************************************************************
// 服务配置
//*****************************************************************************
// 主备固定网关
var gateway = "192.168.60.1";
// 主服务器固定IP
var masterIp = "192.168.60.55";
// 备服务器固定IP
var slaveIp = "192.168.60.244";
// 虚拟IP对应的网络适配器名称
var adapterName = "以太网";
// 虚拟IP
var virtualIp = "192.168.0.11";
// 虚拟IP子网掩码
var netmask = "255.255.255.0";
// 是否启用日志
var logEnable = true;
// 日志文件夹
var logDir = ".\\log";
//*****************************************************************************
//*****************************************************************************
(function() {
var ws = new ActiveXObject("wscript.shell");
var fs = new ActiveXObject("Scripting.FileSystemObject");
var tempDir = fs.GetSpecialFolder(2).Path;
if (logDir.length == 0) {
logDir = tempDir;
} else {
fs.CreateFolder(logDir);
}
function start() {
/* 服务启动,调用脚本启动应用服务 */
}
function stop() {
/* 停止服务,调用脚本停止应用服务 */
}
log("虚拟IP服务启动");
while (true) {
if (!ping(gateway)) {
deleteVip();
} else if (isMaster()) {
log("当前是主服务器");
addVip();
} else {
log("当前是备服务器");
if (ping(masterIp)) {
deleteVip();
} else {
addVip();
}
}
}
/// 记录日志
function log(str) {
if (logEnable) {
var time = new Date();
var txt = time.toLocaleString() + " " + str;
var file = logDir + "\\vip-" + time.getFullYear() + "-" + time.getMonth() + "-" + time.getDate() + ".log";
ws.Run("cmd /c echo " + txt + " >> " + file, 0, true);
}
}
/// 当前是否为主服务器
function isMaster() {
var ret = ws.Run("cmd /c ipconfig | findstr " + masterIp, 0, true);
return ret == 0;
}
/// 网络测试
function ping(ip) {
var ret = ws.Run("cmd /c ping " + ip + " -n 5 -w 3 | findstr TTL", 0, true);
if (ret != 0) {
log("ping " + ip + "失败");
return false;
}
return true;
}
/// 添加虚拟IP,启动应用服务
function addVip() {
var cmd = "cmd /c netsh interface ip add address";
cmd += " " + adapterName;
cmd += " " + virtualIp;
cmd += " " + netmask;
if (ws.Run(cmd, 0, true) == 0) {
log("添加虚拟IP:" + virtualIp);
start();
}
}
/// 删除虚拟IP,停止应用服务
function deleteVip() {
var cmd = "cmd /c netsh interface ip delete address";
cmd += " " + adapterName;
cmd += " " + virtualIp;
if (ws.Run(cmd, 0, true) == 0) {
log("删除虚拟IP:" + virtualIp);
stop();
}
}
}());
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/itwennet/vipsvc.git
git@gitee.com:itwennet/vipsvc.git
itwennet
vipsvc
vipsvc
master

搜索帮助