5 use Net::SFTP::Foreign;
6 use FS::UID qw(adminsuidsetup datasrc);
13 use vars qw( $opt_p $opt_e $opt_d $opt_v );
17 #$opt_e = ".$opt_e" unless $opt_e =~ /^\./;
22 my $user = shift or die &usage;
25 # %%%FREESIDE_CACHE%%%
26 my $cachedir = '/usr/local/etc/freeside/cache.'. datasrc. '/cdrs';
27 mkdir $cachedir unless -d $cachedir;
29 my $format = shift or die &usage;
31 use vars qw( $servername );
32 $servername = shift or die &usage;
38 warn "Retreiving directory listing\n" if $opt_v;
42 my $ls = $ls_sftp->ls('.', wanted => qr/^$opt_p.*\.$opt_e$/i );
48 foreach my $file ( @$ls ) {
50 my $filename = $file->{filename};
51 warn "Downloading $filename\n" if $opt_v;
54 my $get_sftp = sftp();
55 $get_sftp->get($filename, "$cachedir/$filename")
56 or die "Can't get $filename: ". $get_sftp->error;
58 warn "Processing $filename\n" if $opt_v;
60 my $error = FS::cdr::batch_import( {
61 'file' => "$cachedir/$filename",
63 'params' => { 'cdrbatch' => $filename, },
70 $mv_sftp->rename($filename, "$opt_d/$filename")
71 or die "can't move $filename to $opt_d: ". $mv_sftp->error;
74 unlink "$cachedir/$filename";
83 "Usage: \n cdr.import user format servername\n";
91 return $sftp if $sftp && $sftp->cwd;
93 my %sftp = ( host => $servername );
95 $sftp = Net::SFTP::Foreign->new(%sftp);
96 $sftp->error and die "SFTP connection failed: ". $sftp->error;
103 cdr.sftp_and_import - Download CDR files from a remote server via SFTP
107 cdr.sftp_and_import [ -p prefix ] [ -e extension ] [ -d donefolder ] [ -v ] user format [sftpuser@]servername
111 Command line tool to download CDR files from a remote server via SFTP and then
112 import them into the database.
114 -p: file prefix, if specified
116 -e: file extension, defaults to .csv
118 -d: if specified, moves files to the specified folder when done
122 user: freeside username
124 format: CDR format name
126 [sftpuser@]servername: remote server
130 Only supports SFTP right now.