批处理程序:自动上传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下 ...
随机推荐
- 红眼技术博客 » redis连接池红眼技术博客 » redis连接池
红眼技术博客 » redis连接池 redis连接池
- Eclipse在点击运行后不能自动保存的解决
今天在eclipse上写程序调试时,发现当我点击运行按键之后,并不能在运行前帮我自动保存,也就是说每次修改代码之后, 运行的还是前一次运行之前的代码,并不是修改之后的代码,因此通过在网上搜索解决方案之 ...
- svn自动备份
#!/bin/sh PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin export PATH DATE=` ...
- thinkphp模版调用函数方法
原文:thinkphp模版调用函数方法 {变量|函数1|函数2|函数3=参数1,参数2,参数3,###} ###为第4个参数,代表变量替换为第4个参数 举例: {$username|substr=0, ...
- JavaFX游戏开发效率浅谈
声明: 本博客文章原创类别的均为个人原创,版权所有.转载请注明出处: http://blog.csdn.net/ml3947,另外本人的个人博客:http://www.wjfxgame.com. ...
- codeforces 592B The Monster and the Squirrel
题目链接:http://codeforces.com/contest/592/problem/B 题目分类:数学,找规律 题目分析:重要的是画图找规律 代码: #include<bits/s ...
- gant
http://gant.github.io/ http://gant.codehaus.org/
- 利用Node.js实现模拟Session验证的登陆
1.身份验证和用户登陆 在一般的Web应用上,假设要实现用户登陆,最经常使用,也是最简单的方法就是使用Session,主要的思路是在Session中保留一些用户身份信息,然后每次在Session中取, ...
- PyRedisAdmin v1.0 Beta 发布,Redis 在线管理工具 - 开源中国社区
PyRedisAdmin v1.0 Beta 发布,Redis 在线管理工具 - 开源中国社区 PyRedisAdmin v1.0 Beta 发布,Redis 在线管理工具
- hibernate 在tomcat7.X 下配置mysql数据源
先说一点题外话,LZ近期学习java web. 今天刚看到hibernate,发如今hibernate配置数据源时网上的资料都太久远了,一般以tomcat 5 版本号下的配置居多.而tomcat 7下 ...