远程服务器是Linux操作系统,没有ftp服务,可以ssh,数据库每天2:00会自动创建一个备份文件,本地计算机是windows操作系统,希望用sftp每天3:00下载远程服务器上的备份文件。本地系统是linux的,可以参考另一篇文章“linux下自动sftp下载文件”。

Windows下的sftp工具采用putty工具包中的psftp.exe,下载地址:
http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html

命令行下输入“psftp -h”可以查看psftp的用法。

PuTTY Secure File Transfer (SFTP) client
Release 0.59
Usage: psftp [options] [user@]host
Options:
-V        print version information and exit
-pgpfp    print PGP key fingerprints and exit
-b file   use specified batchfile
-bc       output batchfile commands
-be       don't stop batchfile processing if errors
-v        show verbose messages
-load sessname Load settings from saved session
-l user   connect with specified username
-P port   connect to specified port
-pw passw login with specified password
-1 -2     force use of particular SSH protocol version
-4 -6     force use of IPv4 or IPv6
-C        enable compression
-i key    private key file for authentication
-noagent disable use of Pageant
-agent    enable use of Pageant
-batch    disable all interactive prompts

可以看到,我们能够通过导入一个脚本文件sftp.txt来自动完成sftp下载文件。命令格式如下:

psftp remotehost -l username -pw password < sftp.txt

现在的问题是,远程服务器的备份文件采用的文件名是自动创建的,存放在/logs目录,文件名格式为“dumpyyyymmdd.log”,比如dump20070310.log,那么这个每天变化的文件名称如何能传送到脚本文件sftp.txt中呢?

只好google了,终于找到一个可以将date/time用于批处理文件的程序realdate.com,下载地址:
http://www.huweb.hu/maques/realdate.htm

好了,现在开始写批处理脚本sftp.bat。

@echo off

# 写psftp需要的脚本文件sftp.txt
for /f %%i in ('realdate.com /d') do (set remotelogname=%%i)
echo cd /logs > sftp.txt
echo get dump%remotelogname%.log >> sftp.txt
echo bye >> sftp.txt

# 写日志文件sftp.log
echo --------------------------------------- >> sftp.log
for /f %%i in ('realdate.com /f="CCYY-MM-DD"') do (set locallogdate=%%i)
for /f %%i in ('realdate.com /f="hh:mm:ss"') do (set locallogtime=%%i)
echo %locallogdate% %locallogtime% >> sftp.log
psftp remotehost -l username -pw password < sftp.txt > sftp.log
echo. >> sftp.log
echo done. >> sftp.log

将psftp.exe、realdate.com和sftp.bat放在同一文件夹中,为sftp.bat建立计划任务,半夜就可以安心睡觉了。

----sampe 1简单版本

这里的实例的两个文件是:main.bat ; ftptmp.bat

main.bat 的内容就很简单:

  1. ftp -n -s:"ftptmp.bat"

ftptmp.bat的内容如下: ()

open $ftphost

user $username $password

cd $filepath

get $filename

bye

exit

命令中的变量需自行替换。

ps:  注意文件的命名不要是系统自带文件名,如ftp.bat ,这样会导致bat 文件死循环

参考http://blog.csdn.net/oscar999/article/details/45074679

####一个小BUGwindows里面的批处理命令不停地处理同一条命令

参考https://www.cnblogs.com/flypiggy/p/5098529.html

最近在设置路由表的时候,为了方便,做了一个批处理

route.bat

route delete 0.0.0.0
route delete 10.25.0.0
route ADD 10.25.0.0 MASK 255.255.0.0 10.25.15.250 METRIC 1
route ADD 0.0.0.0 MASK 0.0.0.0 192.168.3.43 METRIC 1

结果运行之后,只会不停地执行route delete 0.0.0.0.

百度了一下,发现是批处理文件的名称跟windows系统保留名重复,遂改之,然后就好了

再笨,也要飞得更高!!--Flypiggy
 

#########2

ftp/sftp自动上传、下载脚本

            标签:               path脚本userserver                     
2012-02-13 18:50             5160人阅读             评论(0)             收藏              举报        
本文章已收录于:

 

             分类:        
SHELL                                                        

版权声明:本文为博主原创文章,转载请写明出处。

ftp脚本:

  1. #! /bin/sh
  2. server=172.23.3.150
  3. remotedir=/users/tmp/
  4. filename=test.txt
  5. ftp -in << EOM
  6. open $server
  7. user username password
  8. bin
  9. cd $remotedir
  10. put $filename
  11. bye
  12. EOM
#! /bin/sh

server=172.23.3.150
remotedir=/users/tmp/
filename=test.txt ftp -in << EOM
open $server
user username password
bin
cd $remotedir
put $filename
bye
EOM

sftp脚本:

  1. #!/bin/sh
  2. HOST=172.23.3.150
  3. USER=root
  4. PASSWORD=1234rewq
  5. FILENAME=test.txt
  6. LOCAL_PATH=/home/ligt/WindRiver/
  7. REMOTE_PATH=/users/tmp/
  8. lftp -u $USER,$PASSWORD sftp://$HOST << EOM
  9. lcd $LOCAL_PATH
  10. cd $REMOTE_PATH
  11. put $TARGET
  12. bye
  13. EOM
  14. echo "Success!"
#!/bin/sh

HOST=172.23.3.150
USER=root
PASSWORD=1234rewq
FILENAME=test.txt
LOCAL_PATH=/home/ligt/WindRiver/
REMOTE_PATH=/users/tmp/ lftp -u $USER,$PASSWORD sftp://$HOST << EOM
lcd $LOCAL_PATH
cd $REMOTE_PATH
put $TARGET
bye
EOM echo "Success!"

转:Windows下用sftp自动下载文件的更多相关文章

  1. windows下使用tftp工具下载文件到开发板(linux)

    1.下载tftp工具,也可以上CSDN找个免费0积分的 http://www.52z.com/soft/11886.html 2.确保开发板和windows在同一网段 比如192.168.101.*段 ...

  2. 【Linux系列】-Linux中用shell脚本从SFTP服务器下载文件

    银企直连的电子回单接口中,部分银行使用sftp服务作为文件服务器,通常只保留N天的文件内容,企业未在规定的时间范围下载文件之后就不能下载了,那么有一个自动下载的脚本岂不美滋滋. Linux安装SFTP ...

  3. 11、只允许在主目录下上传和下载文件,不允许用putty登录

    创建用户xiao,   使其只允许在用户主目录 (/var/www/html)下上传和下载文件,不允许用putty登录 (为了安全起见,不给过多的权限) 1.创建xiao用户 [root@localh ...

  4. 转 windows下安装pycharm并连接Linux的python环境 以及 windows 下notepad ++编辑 linux 的文件

    ######sample 1:windows下安装pycharm并连接Linux的python环境 https://www.cnblogs.com/junxun/p/8287998.html wind ...

  5. 安装选择msi格式还是zip(windows下Nodejs zip版下载安装及环境变量配置)

    安装选择msi格式还是zip((windows下Nodejs zip版下载安装及环境变量配置)) -----以node.js 安装为例: 1,外观对比: ✿ 简单介绍一下node的作用: • node ...

  6. windows下ftp上传下载和一些常用命令

    先假设一个ftp地址 用户名 密码 FTP Server: home4u.at.china.com User: yepanghuang Password: abc123 打开windows的开始菜单, ...

  7. [django]windows下用Django,静态文件请求失败,出现UnicodeDecodeError

    问题:windows下用Django,静态文件请求失败,出现UnicodeDecodeError:'utf-8' codec can't decode byte 0xb0 in position 1: ...

  8. windows下如何打开.sketch的文件

    1 .sketch的文件只能在苹果mac上支持的一种文件格式,现在越来越多的设计师喜欢用.sketch 2 windows下如果想打开.sketch文件,去Microsoft store 找一个Lun ...

  9. windows上python上传下载文件到linux服务器指定路径【转】

    从windows上传文件到linux,目录下的文件夹自动创建 #!/usr/bin/env python # coding: utf-8 import paramiko import datetime ...

随机推荐

  1. 学习multiprocessing

    1. multiprocessing.Pool from multiprocessing.pool import Pool def gen_row(): ...return rows def main ...

  2. HDU 4381 Grid

    背包变形. 将操作分为了两类,可以分开处理. 可以dp处理出L[i]:L[i]=-1代表从左到右 i 长度不能被拼凑出来,L[i]!=-1表示从左到右 i 长度能被拼凑出,并且最小费用为L[i]. 反 ...

  3. TD配置安装方式

    TD服务器搭建及配置指南 第一:安装前的环境准备 系统需安装IIS作为web服务器(停止IIS的smtp服务). 选择SQL Server2000作为数据库.Win2003需安装SP3. 以管理员登陆 ...

  4. Oracle小技术集锦

  5. hdu_5805_NanoApe Loves Sequence(xjb搞)

    题目链接:hdu_5805_NanoApe Loves Sequence 题意: 给你n个数,现在要删一个数,删每个数的概率是一样的,现在问你删一个值后的相邻数绝对值最大差的期望是多少,因为担心精度误 ...

  6. 聊一聊PV和并发、以及计算web服务器的数量的方法【转】

    聊一聊PV和并发.以及计算web服务器的数量的方法 站长之家 2016-08-17 09:40 最近和几个朋友,聊到并发和服务器的压力问题.很多朋友,不知道该怎么去计算并发?部署多少台服务器才合适? ...

  7. textarea内容太多, 鼠标点击全部显示

    strRight+="<td bordercolor='#DEDEDE' width='500px' height='50'><div title='"+data ...

  8. Spring.NET 中的 ADO.NET 数据访问的示例

    Spring.NET 1.3.1 中提供了一个使用 AdoTemplate 的完整示例,包括使用泛型和使用非泛型技术进行数据访问,这个示例位于下载的压缩包中\Spring.NET-1.3.1\Spri ...

  9. android版本 busybox

    http://www.busybox.net/downloads/binaries/1.21.1/  根据不同的平台选择busybox已经编译好的

  10. Django 用户认证及OneToOneField

    Django 用户认证如果自己不想写 就可以用django自带的认证 首选导入模块 models.py #!/usr/bin/env python #_*_ coding:utf8 _*_ from ...