转:Windows下用sftp自动下载文件

远程服务器是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] [[email protected]]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建立计划任务,半夜就可以安心睡觉了。

#########2

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

标签:               path脚本userserver

2012-02-13 18:50             5160人阅读             评论(0)             收藏              举报

本文章已收录于:

             分类:

SHELL

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

ftp脚本:

[plain] view plain copy print?

  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脚本:

[plain] view plain copy print?

  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!"
时间: 2024-10-06 03:24:44

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

Windows下使用explorer批量下载文件

背景: 客户的环境是Windows Server 2008 R2,需要每个月安装补丁,但出于安全考虑,将微软的自动更新封掉了,以至于每次安装补丁只能手动下载然后安装. 有时候每次需要下载的补丁均比较多,而服务器上有没有迅雷,QQ旋风等下载工具,也不允许安装,所以每次均手动下载,十分麻烦. ==================我是分割线======================= 此方法是通过系统自带的explorer来实现批量下载. 众所周知,当你在我的电脑中输入一个链接时,explorer会

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

创建用户xiao,   使其只允许在用户主目录 (/var/www/html)下上传和下载文件,不允许用putty登录 (为了安全起见,不给过多的权限) 1.创建xiao用户 [[email protected] root]#  cd  /var/www/html[[email protected] html]#  useradd  xiao  -d  /var/www/html   -s   /sbin/nologin   -g   apache -d    目录         指定用户主目

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

先假设一个ftp地址 用户名 密码 FTP Server: home4u.at.china.com User: yepanghuang Password: abc123 打开windows的开始菜单,执行“运行”命令,在对话框中输入ftp,按下“确定”按钮将会切换至DOS窗口,出现命令提示符 ftp>键入命令连接FTP服务器: ftp> open home4u.at.china.com (回车) 稍等片刻,屏幕提示连接成功: ftp> connected to home4u.china.

windows下Perl如何读取大文件的最后一行(总结)

Perl中读取文件最后一行的方法很多,比如 (1)将文件读入数组,取最后一个元素 open (FILE,"file.txt") or die "$!"; my @arr=<FILE>;; close FILE; my $last=$arr[$#arr]; #$last里就是最后一行的内容了. (2)一行一行读入,到最后一行时输出 open (FILE,"file.txt") or die "$!"; while (

Windows下Java File对象创建文件夹时的一个"坑"

import java.io.File; import java.io.IOException; public class DirCreate { public static void main(String[] args) throws IOException { // TODO Auto-generated method stub String dirStr="D:"; File dir=new File(dirStr); System.out.println("====

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

问题:windows下用Django,静态文件请求失败,出现UnicodeDecodeError:'utf-8' codec can't decode byte 0xb0 in position 1:invalid start byte,怎么解决啊? 回答:应该是静态文件的格式问题.也许它的编码是GBK的,你用UTF-8解,就解不开.用记事本打开,另存一个UTF-8格式.

Windows下MySQL的my.ini文件字符集测试

环境:Windows 8.1+MySQL 5.6.19 首先要说明的是Windows下MySQL的my.ini所在位置为:盘符\ProgramData\MySQL\MySQL Server 5.6下,也就是下图的Data Path下,如果是系统盘,ProgramData的文件夹是隐藏的;非系统盘此文件不是隐藏的.并不是Program Files下的. 2,查看my.ini文件,默认安装的编码都是utf8的. default-character-set=utf8 character-set-ser

windows下emacs的自动补全

emacs是一款神器,懂的人自然懂,但是未经任何配置的emacs却很不好用,尤其是没有自动补全功能的时候,这也是很多人放弃emacs而去选择sublime等易上手的编辑器的原因,当然有些人认为sublime比emacs好用,用emacs和vim只是为了装逼,但是真正的大牛只用emacs和vim而不使用IDE,可是我既不是大牛也不是为了装逼,只是单纯地喜欢emacs的tab键设置,用习惯之后觉得其他编辑器都不好用,但是为了让emacs更加实用,还得做很多杂七杂八的配置,其中我觉得最重要的就是自动补

Windows下python的tar.gz文件安装

windows下下载了django,PIL,web.py发现都是tar.gz格式的文件,网上查找也非常系统的方法,总结一下其他大神的方法,归纳于此. 首先下载tar.gz文件,比如web.py,下载后是一个tar.gz文件,用好压或其他解压软件解压,你会看到目录里有一个setup.py文件,这时,在地址栏输入%comspec%,这样会出现该目录下的提示符,再写Python.exe setup.py install,回车即可.(前提,环境变量已设置,否则无法使用)