批处理程序:自动上传FTP,再登陆linux服务器执行更新
----转载请注明出处:博客园-邦邦酱好
最近在学批处理程序,一直没找到能够结合工作来使用它的地方,前几天测试服务端的时候突然想到可以这样做:
写一个批处理程序,自动通过FTP上传软件包到指定的地方,然后自动登录Linux服务器,解压缩软件包,进行服务端的更新。
先看一下总的调度脚本Auto_Update.bat:
先让用户输入服务器的地址,再选择要执行的操作。
@echo off&setlocal enabledelayedexpansion
::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::相关配置::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::
::服务器地址
::set url=192.168.0.12 ::本地最新程序包的地址
set SourceAddress=D:\testFTP ::FTP上存放程序包的地址
set TargetAddress=/upload ::FTP到服务器的用户名和密码
set FtpName=abcFTP
set FtpPassword= ::telnet上服务器时的用户名和密码
set userid=abcLinux
set password=123456 ::解压缩文件所在的目录
set untarDir=/tmp/upload ::4次拷贝
set copy1=cp /tmp/upload/dst/a.dat /app/ -f
set copy2=cp /tmp/upload/lis/b.dat /lis/ -f
set copy3=cp /tmp/upload/cs /Lis/ -rf
set copy4=cp /tmp/upload/test_ci /app/ -f ::运行程序所需要用到的目录名和命令
set do1_dir=/Lis/set do1=./m.sh
set do2_dir=/app/set do2=./test_ci echo 请输入你要执行操作的服务器地址:
set /p url=
:repeat
echo.
echo.
echo ############请选择要执行的操作###########
echo ----.输入数字1并按回车键,则进行自动上传程序包到FTP服务器的操作
echo ----.输入数字2并按回车键,则直接执行更新操作(用户已手动上传程序包)
echo ----.输入数字3并按回车键,则自动上传程序包并更新程序
echo ----.输入exit并按回车键,则终止脚本
echo 请输入:
set /p choice= ::::::::::::::::::::::::::::::::::::::::::::::
:::::::::::::::程序包上传FTP::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::
if "%choice%"=="" (
echo 请确认你已经把程序包放到本地指定目录下(y/n):
set /p yn=
if /i "!yn!"=="n" (
set yn=
goto end
)
echo 开始上传本地最新的程序包到服务器上...
call Upload_Ftp.bat
echo 上传完毕
goto repeat
) ::::::::::::::::::::::::::::::::::::::::::::::
:::::::::::::::执行更新操作:::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::
if "%choice%"=="" (
echo 本次操作将进行初始化操作,请确认已经重启过服务器(y/n):
set /p yn=
if /i "!yn!"=="n" (
set yn=
goto end
)
echo 开始登陆服务器进行更新操作...
call Run_The_Program.bat
goto repeat
) ::::::::::::::::::::::::::::::::::::::::::::::
:::::::::::::::上传并更新:::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::
if "%choice%"=="" (
echo 本次操作将上传并更新程序,请确认程序包已在本地指定目录下,并已重启过服务器(y/n):
set /p yn=
if /i "!yn!"=="n" (
set yn=
goto end
)
echo 开始上传本地最新的程序包到服务器上...
call Upload_Ftp.bat
echo 上传完毕
echo.
echo 开始登陆服务器进行更新操作...
call Run_The_Program.bat
goto repeat
)
echo.
echo. if "%choice%"=="exit" (
echo 你输入了%choice%字符,批处理自动退出
goto end
) echo 无法识别指令,请重新输入
goto repeat :end
set choice=
echo 脚本终止!
接着是上传FTP的脚本Upload_Ftp.bat:
不能单独运行此脚本,因为它所需的变量都在总调度脚本中。
@echo off ::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::上传过程::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::
rem 登陆FTP
echo open %url% > AutoFtp.ftp
rem 输入用户名和密码进行登陆
echo user %FtpName% %FtpPassword%>> AutoFtp.ftp
echo binary >> AutoFtp.ftp
rem 切换到FTP的某个目录下
echo cd %TargetAddress% >> AutoFtp.ftp
rem 切换到本地的某个目录下
echo lcd %SourceAddress% >> AutoFtp.ftp
rem 设定为:无需用户对每个文件进行确认
echo Prompt off >> AutoFtp.ftp
rem 开始上传
echo mput * >> AutoFtp.ftp
echo bye >> AutoFtp.ftp
echo quit >> AutoFtp.ftp ::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::执行上传::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::
ftp -n -s:AutoFtp.ftp
del AutoFtp.ftp
最后是服务端的更新脚本Run_the_Program.bat:
不能单独运行此脚本,因为它所需的变量都在总调度脚本中。
@echo off
echo set sh=WScript.CreateObject("WScript.Shell") >telnet_tmp.vbs
::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::登录::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::
echo WScript.Sleep >>telnet_tmp.vbs
echo sh.SendKeys "%userid%{ENTER}" >>telnet_tmp.vbs
echo WScript.Sleep >>telnet_tmp.vbs
echo sh.SendKeys "%password%{ENTER}" >>telnet_tmp.vbs
echo WScript.Sleep >>telnet_tmp.vbs
::::::::::::::::::::::::::::::::::::::::::::::
:::::::::::::::::::解压缩:::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::
echo 开始进行解压缩...
echo sh.SendKeys "cd %untarDir%{ENTER}" >>telnet_tmp.vbs
echo sh.SendKeys "tar -zxvf H{TAB}" >>telnet_tmp.vbs
echo sh.SendKeys "{ENTER}" >>telnet_tmp.vbs
echo WScript.Sleep >>telnet_tmp.vbs
::::::::::::::::::::::::::::::::::::::::::::::
:::::::::::::拷贝文件到指定目录:::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::
echo 开始进行拷贝操作...
echo sh.SendKeys "%copy1%{ENTER}" >>telnet_tmp.vbs
echo WScript.Sleep >>telnet_tmp.vbs
echo sh.SendKeys "%copy2%{ENTER}" >>telnet_tmp.vbs
echo WScript.Sleep >>telnet_tmp.vbs
echo sh.SendKeys "%copy3%{ENTER}" >>telnet_tmp.vbs
echo WScript.Sleep >>telnet_tmp.vbs
echo sh.SendKeys "%copy4%{ENTER}" >>telnet_tmp.vbs
echo WScript.Sleep >>telnet_tmp.vbs
::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::运行程序::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::
echo 跳转目录,开始进行初始化环境...
echo sh.SendKeys "cd %do1_dir%{ENTER}" >>telnet_tmp.vbs
echo WScript.Sleep >>telnet_tmp.vbs
echo sh.SendKeys "%do1%{ENTER}" >>telnet_tmp.vbs
echo WScript.Sleep >>telnet_tmp.vbs echo 跳转目录,开始正式运行程序...
echo sh.SendKeys "cd %do2_dir%{ENTER}" >>telnet_tmp.vbs
echo WScript.Sleep >>telnet_tmp.vbs
echo sh.SendKeys "%do2%{ENTER}" >>telnet_tmp.vbs
echo WScript.Sleep >>telnet_tmp.vbs
::::::::::::::::::::::::::::::::::::::::::::::::
:::::::::::::::::开始执行:::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::
echo 开始登陆服务器%url% ..
start telnet %url%
cscript telnet_tmp.vbs
del telnet_tmp.vbs
程序运行已经通过的,不过我修改了一些服务器信息(公司资料要保密嘛~~~~(>_<)~~~~ ),如果有任何问题,欢迎指正~~
运行的时候只需要在windows下使用cmd.exe窗口,切换到以上三个程序的所在目录,输入Auto_Update.bat按下回车键即可。
批处理程序:自动上传FTP,再登陆linux服务器执行更新的更多相关文章
- SecureCRT上使用公钥登陆Linux服务器
SecureCRT部分配置 1.首先生成公钥. 打开SecureCRT(我的版本为7.0,估计其他版本基本相同)程序,点击菜单栏的“工具”->“创建公钥”.按照步骤执行.其中一步比较重要就是选择 ...
- 通过SSH服务登陆linux服务器(版本RHEL7)
通过SSH服务登陆linux服务器(版本RHEL7) SSH服务概述:是一种能够以安全的方式提供远程登陆的协议,也是目前远程管理linux系统的首选方式.在此之前,我们一般使用FTP或者telnet来 ...
- 在linux终端远程登陆linux服务器
在linux终端远程登陆linux服务器 原来在Linux终端远程登陆linux服务器是那么的容易,如果的服务器用户名是abc(也可以是root),只需要在终端输入: 然后电脑会提示输入密码就登录 ...
- Java 连接远程Linux 服务器执行 shell 脚本查看 CPU、内存、硬盘信息
pom.xml jar 包支持 <dependency> <groupId>com.jcraft</groupId> <artifactId>jsch& ...
- PuTTY 连接 linux 服务器执行 make menuconfig 乱码问题解决
PuTTY 连接 linux 服务器执行 make menuconfig 时可能出现乱码,如下图所示: 有两个方法解决这个问题: 方法一: 修改 PuTTY 配置如下图所示: 方法二: 在 -/.ba ...
- 使用ssh公钥密钥自动登陆linux服务器
转自:http://7056824.blog.51cto.com/69854/403669 作为一名 linux 管理员,在多台 Linux 服务器上登陆进行远程操作是每天工作的一部分.但随着服务器的 ...
- [zz] 使用ssh公钥密钥自动登陆linux服务器
目录 .生成密匙对 .拷贝公匙到远程机 .启动登陆代理 这种方法处理后每次需要运行命令:ssh-add ~/.ssh/id_dsa 作为一名 linux 管理员,在多台 Linux 服务器上登陆进行远 ...
- ssh登陆linux服务器 实际场景讲解 让你管理服务器更安全
很多时候我们管理linux系统,都谁使用ssh登陆,因为都知道ssh是加密传输的协议的,可以有效保证我们与 服务器之间的数据通信安全.但是我们忽略了一点,但是登陆的时候我们是输入的账号和密码,这一点其 ...
- 在PHP中调用php_ssh实现远程登陆linux服务器并执行shell脚本。
这个功能主要用于在web端利用程序对远程服务器进行操作,通过PHP_ssh执行shell脚本来实现. 首先要安装php_ssh2组件,linux中centos7下有ssh2源,直接安装.window下 ...
随机推荐
- 基于visual Studio2013解决面试题之0301累加
题目
- 【Cocos2d-X游戏实战开发】捕鱼达人之开发前准备工作(一)
本系列学习教程使用的是cocos2d-x-2.1.4(最新版为cocos2d-x-2.1.5) 博主发现前两个系列的学习教程被严重抄袭,在这里呼吁大家请尊重开发者的劳动成果, 转载的时候请务必注明出处 ...
- Maven插件之portable-config-maven-plugin(不同环境打包)
在大型的项目组中,分不同的开发环境,测试环境,生产环境(说白了就是配置文件不同,或者数据源,或者服务器,或者数据库等);问题来了,如何使用Maven针对不同的环境来打包呢? Maven提供了Profi ...
- DotNetBar.Bar控制Y顺序控制方向
DotNetBar.Bar控件Y方向上的顺序控制 老帅 控件DevComponents.DotNetBar.Bar是能够有多种用途的.能够作为容器,也能够作为工具条,不管做什么,在Y方向上 ...
- 百度地图 javascript相关Bug搜集
一 在手机里用百度地图js版做webapp bug集合 1 之前用2.0版本的时候发现只要地图添加了覆盖物,无论数量多少,当地图放大到很小的范围时候,会卡死 1.1 当时处理办法:将版本降低至1. ...
- 14.2.5.1 Role of the .frm File for InnoDB Tables InnoDB .frm文件的作用
14.2.5.1 Role of the .frm File for InnoDB Tables: 14.2.5.1 Role of the .frm File for InnoDB Tables I ...
- Core Animation之框架简介(一)
Core Animation之框架简介(一) 作者:wangzz 原文地址:http://blog.csdn.net/wzzvictory/article/details/11180241 转载请注明 ...
- Tokyo Tyrant(TTServer)系列(四)-tcrmgr远程管理与调试
Tokyo Tyrant(TTServer)系列-tcrmgr(远程管理与调试) tcrmgr是TokyoTyrant的管理工具,对ttserver进行管理与执行命令: 通过输入tcrmgr回车,能够 ...
- Songs
Two Steps From Hell - Strength of a Thousand Men
- WebSocket是一种协议
WebSocket,并非HTML 5独有,WebSocket是一种协议.只是在handshake的时候,发送的链接信息头和HTTP相似.HTML 5只是实现了WebSocket的客户端.其实,难点在于 ...