zoukankan      html  css  js  c++  java
  • shell脚本编程-例子_使用expect下载ftp文件

    expecthi一种能够按照脚本内容设定的方式和交互程序进行“对话”的程序

    由于linux中的一些命令不太适合脚本化的自动运行,比如fdisk、telnet、ftp连接下载等,所以就必须使用expect来解决这些场景下的自动化运行问题。

    系统默认没有装ftp、expect命令,需要自己先进行yum安装(也可手工安装)

    脚本事例(expect.exp)如下:

    #!/usr/bin/expect    
    set ip [ lindex $argv 0 ]  #脚本的第一个参数,远程主机的IP地址
    set file [ lindex $argv 1 ]  #脚本的第二个参数,指定下载的文件名
    set timeout 10 #设置超时时间
    spawn ftp $ip #执行ftp $ip命令
    expect "Name*" #如果出现Name字符
    send "anonymous
    "  #则输入anoymous并回车
    expect "Password*" #如果出现Password字符
    send "
    " #则仅输入回车
    expect "fpt>*" #如果出现ftp字符
    send "get $file
    " #则发送get $file命令
    expect {
    #如果返回的字符串含有received则说明下载成功
    "*received*" { send_user "Download successful!";send "quit
    " }
    #如果返回的字符串中含有Faild则说明下载失败.
    "*Failed*" { send_user "Download failed!";send "quit
    "}
    }
    expect eof

    赋予执行权限:chmod 774 ./expect.exp

    执行本脚本是可以使用如下语句:

    ./expect.exp 195.92.253.2 robots.txt

    如果你执行成功应该出现如下语句:

    [cos@localhost shell]$ ./expect.exp  195.92.253.2 robots.txt
    spawn ftp 195.92.253.2
    Connected to 195.92.253.2 (195.92.253.2).
    220 (vsFTPd 2.3.4)
    Name (195.92.253.2:cos): anonymous
    331 Please specify the password.
    Password:
    230-Welcome to ZenIV
    230-
    230-The software on this site is made available for free without warranty or
    230-other right of recourse implied or otherwise. No statement save one in
    230-writing by the owner of the system changes this usage agreement. This 
    230-software is provided in the United Kingdom for United Kingdom users,
    230-any export download is at your own risk and liability.
    230-
    230-Many parts of this archive are mirrors of other sites. While we try not
    230-to mirror any inappropriate material we do not have editorial control over
    230-such mirrors and cannot make such a guarantee.
    230-
    230-There is no other user agreement, should your local law make such an
    230-agreement invalid you are prohibited from using this site, and may be
    230-committing an offence under the computer misuse act by continuing.
    230-
    230-By downloading any file from this site you agree to these terms and
    230-conditions, disconnect now if you do not.
    230-
    230-* * * * * * * * * * * * * Transfer Problems ? * * * * * * * * * * * * *
    230-*                                                                     *
    230-*  If you are having problems accessing this site, then please use    *
    230-*  "passive" transfer mode rather than "port" transfer mode.  Thanks. *
    230-*                                                                     *
    230-*  Note: do **NOT** try using download accelerators like aria2c which *
    230-*        make multiple connections, this will likely trigger an       *
    230-*        autonatic ban respons which you will have to request to be   *
    230-*        removed                                                      *
    230-*                                                                     *
    230-* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
    230 Login successful.
    Remote system type is UNIX.
    Using binary mode to transfer files.
    ftp> get robots.txt
    local: robots.txt remote: robots.txt
    227 Entering Passive Mode (195,92,253,2,70,227).
    150 Opening BINARY mode data connection for robots.txt (103 bytes).
    226 Transfer complete.
    103 bytes received in 0.000627 secs (164.27 Kbytes/sec)
    ftp> Download successful!quit
    221 Goodbye.

    祝你好运。

    2015年10月16日00:33:59

  • 相关阅读:
    发现个atan2的正确使用方式
    Forward+ Shading架构
    fatal: unable to connect to gitee.com: gitee.com[0: 180.97.125.228]: errno=Unknown error 解决方案
    HDFS HA(高可用性)集群规划
    如何使用RTP引擎对语音编码进行转码
    关于 Angular 应用 tsconfig.json 中的 target 属性
    浅谈 Orbeon form builder 的权限控制
    关于 Angular 应用 tsconfig.json 中的 lib 属性
    orbeon form 通过 url 的方式同第三方应用集成的开发明细
    orbeon form 的配置介绍
  • 原文地址:https://www.cnblogs.com/xccnblogs/p/4884071.html
Copyright © 2011-2022 走看看