- 论坛徽章:
- 0
|
本帖最后由 meihuaqi 于 2012-05-21 22:54 编辑
我曾经用过的ftps客户端,给你参考一下:- use IO::Socket::SSL;
- #use IO::Socket::INET6;
- if(!($sock = IO::Socket::SSL->new( PeerAddr => '172.16.73.212',
- PeerPort => '990',
- Proto => 'tcp',
- SSL_verify_mode => 0x00,
- SSL_key_file => 'ca2048_s_interca_1.key',
- SSL_cert_file => 'ca2048_s_interca_1.crt',
- SSL_use_cert => 1,
- ))) {
- warn "unable to create socket: ", &IO::Socket::SSL::errstr, "\n";
- exit(0);
- } else {
- warn "connect ($sock).\n" if ($IO::Socket::SSL::DEBUG);
- }
- print $sock "USER test\r\n" ;
- $sock->sysread($data,1024);
- print $data;
- print $sock "PASS click1\r\n" ;
- $sock->sysread($data,1024);
- print $data;
- while(1)
- {
- print $sock "PASV\r\n" ;
- #print $sock "EPSV\r\n" ;
- while(<$sock>)
- {
- # print "$_\n";
- $data=$_;
- last if $data=~/(227)|(229)/;
- }
- chomp($data);
-
- if($data=~/\|(\d+)\|/)
- {
- ($port)=$data=~/\|(\d+)\|/;
- } else {
- ($num1,$num2)=$data=~/,(\d+),(\d+)\)/;
- # print "num1 is $num1. num2 is $num2\n";
- $port=$num1*256+$num2;
- }
- # print "the port is $port\n";
- if(!($s = IO::Socket::SSL->new( PeerAddr => '172.16.73.212',
- PeerPort => "$port",
- Proto => 'tcp',
- SSL_verify_mode => 0x00,
- SSL_key_file => 'ca2048_s_interca_1.key',
- SSL_cert_file => 'ca2048_s_interca_1.crt',
- SSL_use_cert => 1,
- ))) {
- warn "unable to create socket: ", &IO::Socket::SSL::errstr, "\n";
- exit(0);
- } else {
- warn "connect ($sock).\n" if ($IO::Socket::SSL::DEBUG);
- }
-
- print $sock "RETR hostname.txt\r\n" ;
- #print $sock "RETR vmcore.219\r\n" ;
- # while(<$s>)
- # {
- #
- # }
- $s->sysread($data,1024);
- print "$data";
- close($s);
- }
- close($sock);
复制代码 |
|