5 use Net::SFTP::Foreign;
6 use FS::UID qw(adminsuidsetup datasrc);
13 use vars qw( $opt_p $opt_r $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 $ls_sftp->setcwd($opt_r) or die "can't chdir to $opt_r\n"
45 my $ls = $ls_sftp->ls('.', wanted => qr/^$opt_p.*\.$opt_e$/i );
51 foreach my $file ( @$ls ) {
53 my $filename = $file->{filename};
54 warn "Downloading $filename\n" if $opt_v;
57 my $get_sftp = sftp();
58 $get_sftp->get($filename, "$cachedir/$filename")
59 or die "Can't get $filename: ". $get_sftp->error;
61 warn "Processing $filename\n" if $opt_v;
63 my $error = FS::cdr::batch_import( {
64 'file' => "$cachedir/$filename",
66 'params' => { 'cdrbatch' => $filename, },
73 $mv_sftp->rename($filename, "$opt_d/$filename")
74 or die "can't move $filename to $opt_d: ". $mv_sftp->error;
77 unlink "$cachedir/$filename";
86 "Usage: \n cdr.import user format servername\n";
94 return $sftp if $sftp && $sftp->cwd;
96 my %sftp = ( host => $servername );
98 $sftp = Net::SFTP::Foreign->new(%sftp);
99 $sftp->error and die "SFTP connection failed: ". $sftp->error;
106 cdr.sftp_and_import - Download CDR files from a remote server via SFTP
110 cdr.sftp_and_import [ -p prefix ] [ -e extension ] [ -r remotefolder ] [ -d donefolder ] [ -v ] user format [sftpuser@]servername
114 Command line tool to download CDR files from a remote server via SFTP and then
115 import them into the database.
117 -p: file prefix, if specified
119 -e: file extension, defaults to .csv
121 -r: if specified, changes into this remote folder before starting
123 -d: if specified, moves files to the specified folder when done
127 user: freeside username
129 format: CDR format name
131 [sftpuser@]servername: remote server
135 Only supports SFTP right now.