如果有多台应用服务器,每一台都手工的登录,发布,是在太麻烦了,所以写了这样一个脚本。
以下所有脚本经本人调试,都可以在secureCRT中执行。
#$language = "VBScript"
#$interface = "1.0"
crt.Screen.Synchronous = True
' 版本发布脚本(app1~app6)
dim isStart '是否需要重启应用 1重启 0不重启
dim isSingle '更新的文件是否只有一个路径 1是 0否
dim VersionName '版本名称,更新路径
dim i
VersionName="SHLLL_v1.47_100220" '修改
isStart=0 '修改
isSingle=1 '修改
if isSingle=1 then '单个路径
dim VersionSingleCdURL
VersionSingleCdURL="cd /"
'VersionSingleCdURL="cd /路径/"
'VersionSingleCdURL="cd / 路径 /home/" '一般是更新首页
dim VersionSingleCpURL
'VersionSingleCpURL="cp -r --reply=yes / 路径 /update/" & VersionName & "/shlll/ ."
VersionSingleCpURL="cp -r --reply=yes / 路径 /update/" & VersionName & "/usr/ ."
'VersionSingleCpURL="cp -r --reply=yes / 路径 /update/" & VersionName & "/home/ ."
'VersionSingleCpURL="cp -r --reply=yes / 路径 /" & VersionName & "/index.jsp ." '一般是更新首页
else
dim j
dim VersionCdURL(1) '版本发布路径,根据提交路径发生变化。
VersionCdURL(0)="cd / 路径 webapps/"
VersionCdURL(1)="cd / 路径 webapps/"
dim VersionCpURL(1) '版本覆盖路径
VersionCpURL(0)="cp -r --reply=yes / 路径 /update/" & VersionName & "/shlll/ ."
VersionCpURL(1)="cp -r --reply=yes / 路径 /update/" & VersionName & "/home/ ."
end if
'开始执行脚本--请务必检查上面的参数,路径是否正确。---------------------
Sub Main
For i=1 to 6
'登录app服务器
crt.Screen.Send "ssh app" & i & chr(13)
crt.Screen.WaitForString "root@app" & i &"'s password: "
crt.Screen.Send "密码" & chr(13)
crt.Screen.WaitForString "[root@App"& i &" " & chr(126) & "]# "
'停止服务
if isStart=1 then
crt.Screen.Send "bb.stop" & chr(13)
crt.Screen.WaitForString "[root@App" & i &" " & chr(126) & "]# "
end if
'开始更新版本
if isSingle=1 then
crt.Screen.Send "" & VersionSingleCdURL & chr(13)
crt.Screen.Send "" & VersionSingleCpURL & chr(13)
else
for j=0 to Ubound(VersionCdURL)
crt.Screen.Send "" & VersionCdURL(j) & chr(13)
crt.Screen.Send "" & VersionCpURL(j) & chr(13)
next
end if
'重启服务
if isStart=1 then
crt.Screen.Send "bb.start" & chr(13)
end if
Next
End Sub