parse-netrc.pl
上传用户:tjfeida
上传日期:2013-03-10
资源大小:1917k
文件大小:2k
源码类别:

Ftp客户端

开发平台:

Visual C++

  1. #!/usr/bin/perl -w
  2. # Brian Masney <masneyb@gftp.org>
  3. my ($host, $user, $pass, $account, $descr, %bmhash);
  4. use strict;
  5. open NRC, "<.netrc" or die "Can't open .netrc: $!n";
  6. open BM, "+>>.gftp/bookmarks" or die "Can't open .gftp/bookmarks: $!nTry running gFTP once to create a default bookmarks filen";
  7. seek (BM, 0, 0);
  8. while (<BM>)
  9.   {
  10.     ($descr) = /[(.*?)]/;
  11.     next if !defined ($descr);
  12.     $bmhash{$descr} = 1;
  13.   }
  14. seek (BM, 0, 2);
  15. while (<NRC>)
  16.   {
  17.     if (/machine /)
  18.       {
  19.         print_bookmark ();
  20.         ($host) = /machine (.*?)s+/;
  21.       }
  22.     if (/login /)
  23.       {
  24.         ($user) = /login (.*?)s+/;
  25.       }
  26.     if (/password /)
  27.       {
  28.         ($pass) = /password (.*?)s+/;
  29.       }
  30.     if (/account /)
  31.       {
  32.         ($account) = /account (.*?)s+/;
  33.       }
  34.   }
  35. print_bookmark ();
  36. close NRC;
  37. close BM;
  38. print "The contents of your .netrc file should now be stored in .gftp/bookmarksn";
  39. sub print_bookmark
  40. {
  41.   my $i;
  42.   return if !defined ($host);
  43.  
  44.   if (!defined ($bmhash{$host}))
  45.     { $descr = $host; }
  46.   else
  47.     {
  48.       for ($i=0; ; $i++)
  49.         {
  50.           $descr = "$host ($i)";
  51.           last if !defined ($bmhash{$descr});
  52.         }
  53.     }
  54.   
  55.   print BM "[$descr]n";
  56.   print BM "hostname=$hostn";
  57.   print BM "port=21n";
  58.   print BM "protocol=FTPn";
  59.   print BM "remote directory=n";
  60.   print BM "local directory=n";
  61.   if (!defined ($user))
  62.     { $user = "anonymous"; }
  63.   print BM "username=$usern";
  64.   if ($user eq "anonymous" || !defined ($pass))
  65.     { $pass = "@EMAIL@"; }
  66.   print BM "password=$passn";
  67.   if (!defined ($account))
  68.     { $account = ""; }
  69.   print BM "account=$accountnn";
  70.   print "Added $descr = $user@$hostn";
  71.   undef ($host);
  72.   undef ($user);
  73.   undef ($pass);
  74.   undef ($account);
  75. }