批处理程序:自动上传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下 ...
随机推荐
- 基于MMSeg算法的中文分词类库
原文:基于MMSeg算法的中文分词类库 最近在实现基于lucene.net的搜索方案,涉及中文分词,找了很多,最终选择了MMSeg4j,但MMSeg4j只有Java版,在博客园上找到了*王员外*(ht ...
- Nancy.Host的Web应用
Nancy.Host实现脱离iis的Web应用 本篇将介绍如何使用Nancy.Host实现脱离iis的Web应用,在开源任务管理平台TaskManagerV2.0代码里面已经使用了Nancy.Host ...
- 《Android系统开发》笔记
<Android系统开发>笔记1:Android系统概述 Android四层架构: 1. Linux Kernel&driver层 a.依赖于Linux 2.6内核,包含安全性.内 ...
- UDP 通信
import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetAddress; public ...
- python - ImportError: No module named http.cookies error when installing cherrypy 3.2 - Stack Overflow
python - ImportError: No module named http.cookies error when installing cherrypy 3.2 - Stack Overfl ...
- Android 推断当前的界面是否是桌面的方法
在开发桌面飘浮控件的时候,须要通过service查看当前是不是桌面,从而控制漂浮窗的显现与消失,以下的代码就是推断是否是桌面的方法 /** * 推断当前界面是否是桌面 */ private boole ...
- 微信支付.net官方坑太多,我们来精简
原文:微信支付.net官方坑太多,我们来精简 微信支付官方坑太多,我们来精简 我把官方的代码,打包成了 an.wxapi.dll. 里面主要替换了下注释.呵呵.然后修改了几个地方. 修改一.Confi ...
- HDU 4022 Bombing (map + multiset)
题意: 在x,y坐标范围为10 ^ -9 ~~ 10 ^ 9的坐标轴之中,有 10W个点(注意有些点可能在同一坐标上),然后有10W个询问,处理询问按照输入顺序处理,对于每个询问a,b a == ...
- 点滴的积累---J2SE学习小结
点滴的积累---J2SE学习小结 什么是J2SE J2SE就是Java2的标准版,主要用于桌面应用软件的编程:包括那些构成Java语言核心的类.比方:数据库连接.接口定义.输入/输出.网络编程. 学习 ...
- JDBC/XML的一些基本使用
原文:JDBC/XML的一些基本使用 一.知识点题目:JDBC核心API的使用 关键字:JDBC核心API 内容: 1)加载JDBC驱动: Oracle:Class.forName(“oracle.j ...