Hi Axel, nice script. How about sftp? or scp? its more secure way to
transfer files.

Thanks,
Amiel

On 1/17/07, Axel Huizinga <[EMAIL PROTECTED]> wrote:

 [EMAIL PROTECTED] schrieb:

Hi.
I'm trying to add the ability to upload the current file via ftp using the
tools-menu, but failed doing it with the windows ftp.exe only.
So I thought lua might be up to the task, but I'm not good enough to make it 
happen.
Here is what I'm trying to do:

My HTML/PHP-files may be located in
d:\web\domain1.tld\
d:\web\domain2.tld\
d:\web\domain3.tld\
...
each domain is on a different server and thus needs different login-parameters
(domain,login,password).
These details would be saved in simple textfiles. I might have
$(SciteDefaultHome)\profiles\domain1.tld.ftp
$(SciteDefaultHome)\profiles\domain2.tld.ftp
$(SciteDefaultHome)\profiles\domain3.tld.ftp
...
Each *.ftp contais the parameters for that server.

Now, when I trigger the script from Scite's menu, it should read the current
files parent directory name (e.g. "domain1.tld/"), load the apropriate profile
(in this case "$(SciteDefaultHome)\profiles\domain1.tld.ftp") and use the
windows ftp.exe with this information to upload the current file without user
interaction.

Please, can anybody help me with this? I didn't find and lua-ftp-scripts.
It works partially without lua, but then I can't get just the parent directory
name, only the whole $(FileDir).

Any help would be appreciated!

Gerrit
_______________________________________________
Scite-interest mailing list
[EMAIL PROTECTED]://mailman.lyra.org/mailman/listinfo/scite-interest

   With Lua I had no luck so I do it with perl.

script:
#!/usr/bin/perl -w
use Data::Dumper;
use Fcntl;
use strict;
our(
    $host, $user, $password,
    $fileName, $remoteDocRoot, $server, $serverData, $serverOptions,
    $destPath, $localPath, $dataFile, $sftp, $remotePath
    );
$| = 1;
$localPath = $ARGV[0];
my @parts = split(/\//, $localPath);
$fileName = pop(@parts);
$destPath = '';
$_ = $server = pop(@parts);
while(! /\./ ) {
    $destPath = $_.'/'.$destPath;
    $_ = $server = pop(@parts);
}
$server = $_;
printf("localPath:$localPath destPath:$destPath server:$server\n");
printf("server:$server\n");

$dataFile = "/srv/www/projects/$server";
if( -f $dataFile){
    open(FH, '<', $dataFile);
    while( <FH>){
        chomp();
        my @pair = split(':');
        $serverOptions->{$pair[0]} = $pair[1];
    }

    printf ("user:%s remote:%s\n",$serverOptions->{user},
$serverOptions->{remote} );
    if($serverOptions->{remote} eq '/'){
        $remotePath = $destPath.$fileName ;
    }
    else{
        $remotePath = $serverOptions->{remote}.'/'.$destPath.$fileName;
    }
    printf ("remotePath:%s\n",$remotePath );
}
if($serverOptions->{proto} eq 'sftp'){
    use Net::SSH2;
    my $ssh2 = Net::SSH2->new;
    die "can't connect" unless $ssh2->connect($server);
    die "can't authenticate"
     unless $ssh2->auth_keyboard($serverOptions->{user},
$serverOptions->{pass});
    my $res = $ssh2->scp_put ( $localPath , $remotePath) or die "$!";
    printf "done upload %s %s\n",$res , $remotePath;
}
else{
    if($serverOptions->{proto} eq 'ftp'){
        use Net::FTP;
        use File::Basename;
        my $ftp = Net::FTP->new($server, Debug =>0, Passive =>1, Timeout
=> 10)
            or die "Cannot connect to $server: $@";
        printf("Connected %s\n", $server);
        $ftp->login($serverOptions->{user}, $serverOptions->{pass})
            or die "Cannot login ", $ftp->message;
        printf("Logged in :-)\n");
        $ftp->binary;
        printf "start upload of %s to $remotePath%s\n", $localPath,
$ftp->pwd;
        $ftp->put( $localPath , $remotePath) or die "$!";
        printf "done upload to %s %s\n",
            $ftp->size($remotePath) , $remotePath;
    }
}

user options:


postUpdateProg=/srv/www/htdocs/teamtrier.de/safe/updateSftp
command.name.5.*=PostUpdate

command.5.*=$(postUpdateProg) "$(FilePath)"

command.subsystem.5.*=0
command.mode.5.*=savebefore:1
command.shortcut.5.*=Shift+Ctrl+PageUp

Cordially,
Axel

_______________________________________________
Scite-interest mailing list
[email protected]
http://mailman.lyra.org/mailman/listinfo/scite-interest





--
socket error: unable to connect to 127.0.0.1
_______________________________________________
Scite-interest mailing list
[email protected]
http://mailman.lyra.org/mailman/listinfo/scite-interest

Reply via email to