• Perl脚本学习经验(四)--Perl中sftp的使用


    使用sftp,需要使用Except模块,该模块需要下载安装在perl目录下,可以上http://www.cpan.org/上下载对应的安装包;
    1. 用root用户登录环境;
    2. cd /usr/lib/perl5/
    3. 上传包IO-Tty-1.10.tar.gz 和 Expect-1.21.tar.gz到perl5目录下;
    4. 安装IO-Tty-1.10
     tar -zxvf IO-Tty-1.10.tar.gz
     cd IO-Tty-1.10/
     perl Makefile.PL
     make
     make test
     make install
    5. 安装Expect-1.21
     tar -zxvf Expect-1.21.tar.gz
     cd Expect-1.21/
     perl Makefile.PL
     make
     make test
     make install

    使用use Expect;
    Demo:
        my $ssh = Expect->new;
        my $timeout = 10;
        $ssh->raw_pty => 1;
        $ssh->spawn("sftp $User@$Server") or die "spawn failed! ";
        $ssh->expect($timeout,[qr/continue connecting (yes/no)?/,sub{$ssh->send("yes ");exp_continue;}],
                              [qr/Password:/,sub{$ssh->send("$Password ");exp_continue;}],
                              [qr/sftp>/,sub{$ssh->send("cd config ");}]);
                             
        $ssh->expect($timeout,[qr/sftp>/,sub{$ssh->send("put $g_local_file $g_file ");}]);
        $ssh->expect(86400,"sftp>") or die "not see sftp tip for exit!";
        $ssh->send("exit ");
        $ssh->soft_close();

    备注:

     1. 第一次使用sftp的时候,没有记录对应ip,所以会有以下提示:

    Connecting to 192.168.1.1...
    The authenticity of host 192.168.1.1(192.168.1.1)' can't be established.
    RSA key fingerprint is 86:39:3b:c9:4b:90:df:e9:39:1d:3c:fb:56:26:2f:28.
    Are you sure you want to continue connecting (yes/no)?

    所以在脚本中需要发送yes

      2.exp_continue 匹配到就执行send中的命令,匹配不到就继续执行下面的命令;

         如果不加exp_continue,顺序执行脚本命令;

  • 相关阅读:
    揭示短线操作宝贵心得
    MFC常用类、成员函数、数组类、Cstring类、CTime类、CPoint类
    A股和B股的区别
    大盘指数的定义及其计算方法
    追涨杀跌法
    成交量变化八规律(旧文有韵)
    蓝筹股、红筹股的含义
    对上市公司进行综合分析
    socket异步笔记
    从WEB SERVICE 上返回大数据量的DATASET
  • 原文地址:https://www.cnblogs.com/huochangjun/p/3365484.html
Copyright © 2020-2023  润新知