1SCP(3) User Contributed Perl Documentation SCP(3)
2
3
4
6 Net::SCP - Perl extension for secure copy protocol
7
9 #procedural interface
10 use Net::SCP qw(scp iscp);
11 scp($source, $destination);
12 iscp($source, $destination); #shows command, asks for confirmation, and
13 #allows user to type a password on tty
14
15 #OO interface
16 $scp = Net::SCP->new( "hostname", "username" );
17 #with named params
18 $scp = Net::SCP->new( { "host"=>$hostname, "user"=>$username } );
19 $scp->get("filename") or die $scp->{errstr};
20 $scp->put("filename") or die $scp->{errstr};
21 #tmtowtdi
22 $scp = new Net::SCP;
23 $scp->scp($source, $destination);
24
25 #Net::FTP-style
26 $scp = Net::SCP->new("hostname");
27 $scp->login("user");
28 $scp->cwd("/dir");
29 $scp->size("file");
30 $scp->get("file");
31
33 Simple wrappers around ssh and scp commands.
34
36 scp SOURCE, DESTINATION
37 Can be called either as a subroutine or a method; however, the
38 subroutine interface is depriciated.
39
40 Calls scp in batch mode, with the -B -p -q and -r options. Returns
41 false upon error, with a text error message accessable in
42 $scp->{errstr}.
43
44 Returns false and sets the errstr attribute if there is an error.
45
46 iscp SOURCE, DESTINATION
47 Can be called either as a subroutine or a method; however, the
48 subroutine interface is depriciated.
49
50 Prints the scp command to be execute, waits for the user to
51 confirm, and (optionally) executes scp, with the -p and -r flags.
52
53 Returns false and sets the errstr attribute if there is an error.
54
56 new HOSTNAME [ USER ] | HASHREF
57 This is the constructor for a new Net::SCP object. You must
58 specify a hostname, and may optionally provide a user.
59 Alternatively, you may pass a hashref of named params, with the
60 following keys:
61
62 host - hostname
63 user - username
64 interactive - bool
65 cwd - current working directory on remote server
66
67 login [USER]
68 Compatibility method. Optionally sets the user.
69
70 cwd CWD
71 Sets the cwd (used for a subsequent get or put request without a
72 full pathname).
73
74 get REMOTE_FILE [, LOCAL_FILE]
75 Uses scp to transfer REMOTE_FILE from the remote host. If a local
76 filename is omitted, uses the basename of the remote file.
77
78 mkdir DIRECTORY
79 Makes a directory on the remote server. Returns false and sets the
80 errstr attribute on errors.
81
82 (Implementation note: An ssh connection is established to the
83 remote machine and '/bin/mkdir -p' is used to create the
84 directory.)
85
86 size FILE
87 Returns the size in bytes for the given file as stored on the
88 remote server. Returns 0 on error, and sets the errstr attribute.
89 In the case of an actual zero-length file on the remote server, the
90 special value '0e0' is returned, which evaluates to zero when used
91 as a number, but is true.
92
93 (Implementation note: An ssh connection is established to the
94 remote machine and wc is used to determine the file size.)
95
96 put LOCAL_FILE [, REMOTE_FILE]
97 Uses scp to trasnfer LOCAL_FILE to the remote host. If a remote
98 filename is omitted, uses the basename of the local file.
99
100 binary
101 Compatibility method: does nothing; returns true.
102
103 quit
104 Compatibility method: does nothing; returns true.
105
107 Q: How do you supply a password to connect with ssh within a perl
108 script using the Net::SSH module?
109
110 A: You don't (at least not with this module). Use RSA or DSA keys.
111 See the
112 quick help in the next section and the ssh-keygen(1) manpage.
113
114 A #2: See Net::SCP::Expect instead.
115
116 Q: My script is "leaking" scp processes.
117
118 A: See "How do I avoid zombies on a Unix system" in perlfaq8,
119 IPC::Open2, IPC::Open3 and "waitpid" in perlfunc.
120
122 1 Generate keys
123 Type:
124
125 ssh-keygen -t rsa
126
127 And do not enter a passphrase unless you wanted to be prompted for
128 one during file copying.
129
130 Here is what you will see:
131
132 $ ssh-keygen -t rsa
133 Generating public/private rsa key pair.
134 Enter file in which to save the key (/home/User/.ssh/id_rsa):
135 Enter passphrase (empty for no passphrase):
136
137 Enter same passphrase again:
138
139 Your identification has been saved in /home/User/.ssh/id_rsa.
140 Your public key has been saved in /home/User/.ssh/id_rsa.pub.
141 The key fingerprint is:
142 5a:cd:2b:0a:cd:d9:15:85:26:79:40:0c:55:2a:f4:23 User@JEFF-CPU
143
144 2 Copy public to machines you want to upload to
145 "id_rsa.pub" is your public key. Copy it to "~/.ssh" on target
146 machine.
147
148 Put a copy of the public key file on each machine you want to log
149 into. Name the copy "authorized_keys" (some implementations name
150 this file "authorized_keys2")
151
152 Then type:
153
154 chmod 600 authorized_keys
155
156 Then make sure your home dir on the remote machine is not group or
157 world writeable.
158
160 Could really use a maintainer with enough time to at least review and
161 apply patches more patches. Or the module should just be deprecated in
162 favor of Net::SFTP::Expect or Net::SFTP::Foreign and made into a simple
163 compatiblity wrapper.
164
165 Ivan Kohler <ivan-netscp_pod@420.am>
166
167 Major updates Anthony Deaver <bishop@projectmagnus.org>
168
169 Thanks to Jon Gunnip <jon@soundbite.com> for fixing a bug with size().
170
171 Patch for the mkdir method by Anthony Awtrey <tony@awtrey.com>.
172
173 Thanks to terrence brannon <tbone@directsynergy.com> for the
174 documentation in the GENERATING AND USING SSH KEYS section.
175
177 Copyright (c) 2000 Ivan Kohler Copyright (c) 2007 Freeside Internet
178 Services, Inc. All rights reserved. This program is free software;
179 you can redistribute it and/or modify it under the same terms as Perl
180 itself.
181
183 Still has no-OO cruft.
184
185 In order to work around some problems with commercial SSH2, if the
186 source file is on the local system, and is not a directory, the -r flag
187 is omitted. It's probably better just to use OpenSSH
188 <http://www.openssh.com/> which is the de-facto standard these days
189 anyway.
190
191 The Net::FTP-style OO stuff is kinda lame. And incomplete.
192
193 iscp doesnt expect you to be logging into the box that you are copying
194 to for the first time. so it's completely clueless about how to handle
195 the whole 'add this file to known hosts' message so it just hangs after
196 the user hits y. (Thanks to John L. Utz III). To avoid this, SSH to
197 the box once first.
198
200 For a perl implementation that does not require the system scp command,
201 see Net::SFTP instead.
202
203 For a wrapper version that allows you to use passwords, see
204 Net::SCP::Expect instead.
205
206 For a wrapper version of the newer SFTP protocol, see
207 Net::SFTP::Foreign instead.
208
209 Net::SSH, Net::SSH::Perl, Net::SSH::Expect, Net::SSH2, IPC::PerlSSH
210
211 scp(1), ssh(1), IO::File, IPC::Open2, IPC::Open3
212
213
214
215perl v5.36.0 2023-01-20 SCP(3)