NAME
Net::SCP - Perl extension for secure copy protocol
SYNOPSIS
#procedural interface
use Net::SCP qw(scp iscp);
scp($source, $destination);
iscp($source, $destination); #shows command, asks for confirmation, and
#allows user to type a password on tty
#OO interface
$scp = Net::SCP->new( "hostname", "username" );
#with named params
$scp = Net::SCP->new( { "host"=>$hostname, "user"=>$username } );
$scp->get("filename") or die $scp->{errstr};
$scp->put("filename") or die $scp->{errstr};
#tmtowtdi
$scp = new Net::SCP;
$scp->scp($source, $destination);
#Net::FTP-style
$scp = Net::SCP->new("hostname");
$scp->login("user");
$scp->cwd("/dir");
$scp->size("file");
$scp->get("file");
$scp->quit;
DESCRIPTION
Simple wrappers around ssh and scp commands.
SUBROUTINES
- scp SOURCE, DESTINATION
-
Can be called either as a subroutine or a method; however, the subroutine interface is depriciated.
Calls scp in batch mode, with the -B -p -q and -r options. Returns false upon error, with a text error message accessable in $scp->{errstr}.
Returns false and sets the errstr attribute if there is an error.
- iscp SOURCE, DESTINATION
-
Can be called either as a subroutine or a method; however, the subroutine interface is depriciated.
Prints the scp command to be execute, waits for the user to confirm, and (optionally) executes scp, with the -p and -r flags.
Returns false and sets the errstr attribute if there is an error.
METHODS
- new HOSTNAME [ USER ] | HASHREF
-
This is the constructor for a new Net::SCP object. You must specify a hostname, and may optionally provide a user. Alternatively, you may pass a hashref of named params, with the following keys:
host - hostname user - username interactive - bool cwd - current working directory on remote server
- login [USER]
-
Compatibility method. Optionally sets the user.
- cwd CWD
-
Sets the cwd (used for a subsequent get or put request without a full pathname).
- get REMOTE_FILE [, LOCAL_FILE]
-
Uses scp to transfer REMOTE_FILE from the remote host. If a local filename is omitted, uses the basename of the remote file.
- mkdir DIRECTORY
-
Makes a directory on the remote server. Returns false and sets the errstr attribute on errors.
(Implementation note: An ssh connection is established to the remote machine and '/bin/mkdir -p' is used to create the directory.)
- size FILE
-
Returns the size in bytes for the given file as stored on the remote server. Returns 0 on error, and sets the errstr attribute. In the case of an actual zero-length file on the remote server, the special value '0e0' is returned, which evaluates to zero when used as a number, but is true.
(Implementation note: An ssh connection is established to the remote machine and wc is used to determine the file size.)
- put LOCAL_FILE [, REMOTE_FILE]
-
Uses scp to trasnfer LOCAL_FILE to the remote host. If a remote filename is omitted, uses the basename of the local file.
- binary
-
Compatibility method: does nothing; returns true.
FREQUENTLY ASKED QUESTIONS
Q: How do you supply a password to connect with ssh within a perl script using the Net::SSH module?
A: You don't. Use RSA or DSA keys. See the ssh-keygen(1) manpage.
Q: My script is "leaking" ssh processes.
A: See "How do I avoid zombies on a Unix system" in perlfaq8, IPC::Open2, IPC::Open3 and "waitpid" in perlfunc.
AUTHORS
Ivan Kohler <ivan-netscp_pod@420.am>
Major updates Anthony Deaver <bishop@projectmagnus.org>
Thanks to Jon Gunnip <jon@soundbite.com> for fixing a bug with size().
Patch for the mkdir method by Anthony Awtrey <tony@awtrey.com>
COPYRIGHT
Copyright (c) 2000 Ivan Kohler. Copyright (c) 2000 Silicon Interactive Software Design. Copyright (c) 2000 Freeside Internet Services, LLC All rights reserved. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
BUGS
Still has no-OO cruft.
In order to work around some problems with commercial SSH2, if the source file is on the local system, and is not a directory, the -r flag is omitted.
It's probably better just to use SSH1 or OpenSSH <http://www.openssh.com/>
The Net::FTP-style OO stuff is kinda lame. And incomplete.
SEE ALSO
scp(1), ssh(1)