批处理程序:自动上传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下 ...
随机推荐
- 14.8.2 Verifying File Format Compatibility 校验文件格式兼容性:
14.8.2 Verifying File Format Compatibility 校验文件格式兼容性: 14.8.2.1 Compatibility Check When InnoDB Is St ...
- 使用Intent 将底层栈里所有的activity都清理掉
可以利用清理历史栈的方法,来巧妙关闭所有activity,首先用一个设置为不可见的activity A来启动程序,这个activity A的作用只是用来垫栈底,只有启动和退出程序才会用到这个activ ...
- MFC实现多风格真彩色大图标工具栏按钮
研究zlib库,想实现一个类似winrar功能的小东东,打开winrar界面看它的工具栏比较好看于是动手想做一个,当然资源也使用的是winrar附带的.下面是截图:真彩色(32位)32*32大图标工具 ...
- Lucene.Net 2.3.1开发介绍 —— 三、索引(六)
原文:Lucene.Net 2.3.1开发介绍 -- 三.索引(六) 2.2 Field的Boost 如果说Document的Boost是一条线,那么Field的Boost则是一个点.怎么理解这个点呢 ...
- 向大家推荐个android的游戏引擎——cocos2d-x
最近发现单单用android自带的功能函数来编写游戏,往往有很大的局限性,即耗时长,调试繁琐,没有一定的框架.所以博主发现了游戏引擎这个好东西,游戏引擎所拥有的架构和功能函数,使得游戏的编写更加得心应 ...
- 使用gulp创建ajax模拟请求
概述 之前一直使用gulp构建前端项目,这个基于node流并崇尚“编程而非配置”的工具让我深深的爱上了他.强大的gulp能做到的不仅仅是压缩和合并js.css,它能做到的还有更多.今天我给大家带来使用 ...
- 北京哪儿有卖tods豆豆鞋的?在线等答案、、、、(类似动物园、西单等地)_百度知道
北京哪儿有卖tods豆豆鞋的?在线等答案....(类似动物园.西单等地)_百度知道 北京哪儿有卖tods豆豆鞋的?在线等答案....(类似动物园.西单等地)
- 飘逸的python - yield简明教程
发现还有非常多人对yield不理解,云里雾里,于是试着用文字表述. 仅仅要函数含有yield语句,它就返回一个生成器.所以我们与其把其看成函数定义,不如看作是生成器定义.函数用return返回,而生成 ...
- CentOS 7单用户模式修改root密码
CentOS 7的单用户模式和6.5稍有不同 把ro改成 "rw init=/sysroot/bin/sh". 完成之后按 "Ctrl+x" chroot /s ...
- C编译: makefile基础
作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 在编译一个大型项目的时候,往往有很多目标文件.库文件.头文件以及最终的可执行文件. ...