man Net::SCP () - Perl extension for secure copy protocol
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 CW$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.