diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-15 19:43:11 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-15 19:43:11 +0000 |
commit | fc22b3d6507c6745911b9dfcc68f1e665ae13dbc (patch) | |
tree | ce1e3bce06471410239a6f41282e328770aa404a /upstream/mageia-cauldron/man3pm/Net::FTP.3pm | |
parent | Initial commit. (diff) | |
download | manpages-l10n-fc22b3d6507c6745911b9dfcc68f1e665ae13dbc.tar.xz manpages-l10n-fc22b3d6507c6745911b9dfcc68f1e665ae13dbc.zip |
Adding upstream version 4.22.0.upstream/4.22.0
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'upstream/mageia-cauldron/man3pm/Net::FTP.3pm')
-rw-r--r-- | upstream/mageia-cauldron/man3pm/Net::FTP.3pm | 661 |
1 files changed, 661 insertions, 0 deletions
diff --git a/upstream/mageia-cauldron/man3pm/Net::FTP.3pm b/upstream/mageia-cauldron/man3pm/Net::FTP.3pm new file mode 100644 index 00000000..2150ad3d --- /dev/null +++ b/upstream/mageia-cauldron/man3pm/Net::FTP.3pm @@ -0,0 +1,661 @@ +.\" -*- mode: troff; coding: utf-8 -*- +.\" Automatically generated by Pod::Man 5.01 (Pod::Simple 3.43) +.\" +.\" Standard preamble: +.\" ======================================================================== +.de Sp \" Vertical space (when we can't use .PP) +.if t .sp .5v +.if n .sp +.. +.de Vb \" Begin verbatim text +.ft CW +.nf +.ne \\$1 +.. +.de Ve \" End verbatim text +.ft R +.fi +.. +.\" \*(C` and \*(C' are quotes in nroff, nothing in troff, for use with C<>. +.ie n \{\ +. ds C` "" +. ds C' "" +'br\} +.el\{\ +. ds C` +. ds C' +'br\} +.\" +.\" Escape single quotes in literal strings from groff's Unicode transform. +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" +.\" If the F register is >0, we'll generate index entries on stderr for +.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index +.\" entries marked with X<> in POD. Of course, you'll have to process the +.\" output yourself in some meaningful fashion. +.\" +.\" Avoid warning from groff about undefined register 'F'. +.de IX +.. +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{\ +. if \nF \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" +.. +. if !\nF==2 \{\ +. nr % 0 +. nr F 2 +. \} +. \} +.\} +.rr rF +.\" ======================================================================== +.\" +.IX Title "Net::FTP 3pm" +.TH Net::FTP 3pm 2023-11-28 "perl v5.38.2" "Perl Programmers Reference Guide" +.\" For nroff, turn off justification. Always turn off hyphenation; it makes +.\" way too many mistakes in technical documents. +.if n .ad l +.nh +.SH NAME +Net::FTP \- FTP Client class +.SH SYNOPSIS +.IX Header "SYNOPSIS" +.Vb 1 +\& use Net::FTP; +\& +\& $ftp = Net::FTP\->new("some.host.name", Debug => 0) +\& or die "Cannot connect to some.host.name: $@"; +\& +\& $ftp\->login("anonymous",\*(Aq\-anonymous@\*(Aq) +\& or die "Cannot login ", $ftp\->message; +\& +\& $ftp\->cwd("/pub") +\& or die "Cannot change working directory ", $ftp\->message; +\& +\& $ftp\->get("that.file") +\& or die "get failed ", $ftp\->message; +\& +\& $ftp\->quit; +.Ve +.SH DESCRIPTION +.IX Header "DESCRIPTION" +\&\f(CW\*(C`Net::FTP\*(C'\fR is a class implementing a simple FTP client in Perl as +described in RFC959. It provides wrappers for the commonly used subset of the +RFC959 commands. +If IO::Socket::IP or IO::Socket::INET6 is installed it also provides +support for IPv6 as defined in RFC2428. +And with IO::Socket::SSL installed it provides support for implicit FTPS +and explicit FTPS as defined in RFC4217. +.PP +The Net::FTP class is a subclass of Net::Cmd and (depending on avaibility) of +IO::Socket::IP, IO::Socket::INET6 or IO::Socket::INET. +.SS Overview +.IX Subsection "Overview" +FTP stands for File Transfer Protocol. It is a way of transferring +files between networked machines. The protocol defines a client +(whose commands are provided by this module) and a server (not +implemented in this module). Communication is always initiated by the +client, and the server responds with a message and a status code (and +sometimes with data). +.PP +The FTP protocol allows files to be sent to or fetched from the +server. Each transfer involves a \fBlocal file\fR (on the client) and a +\&\fBremote file\fR (on the server). In this module, the same file name +will be used for both local and remote if only one is specified. This +means that transferring remote file \f(CW\*(C`/path/to/file\*(C'\fR will try to put +that file in \f(CW\*(C`/path/to/file\*(C'\fR locally, unless you specify a local file +name. +.PP +The protocol also defines several standard \fBtranslations\fR which the +file can undergo during transfer. These are ASCII, EBCDIC, binary, +and byte. ASCII is the default type, and indicates that the sender of +files will translate the ends of lines to a standard representation +which the receiver will then translate back into their local +representation. EBCDIC indicates the file being transferred is in +EBCDIC format. Binary (also known as image) format sends the data as +a contiguous bit stream. Byte format transfers the data as bytes, the +values of which remain the same regardless of differences in byte size +between the two machines (in theory \- in practice you should only use +this if you really know what you're doing). This class does not support +the EBCDIC or byte formats, and will default to binary instead if they +are attempted. +.SS "Class Methods" +.IX Subsection "Class Methods" +.ie n .IP """new([$host][, %options])""" 4 +.el .IP "\f(CWnew([$host][, %options])\fR" 4 +.IX Item "new([$host][, %options])" +This is the constructor for a new Net::FTP object. \f(CW$host\fR is the +name of the remote host to which an FTP connection is required. +.Sp +\&\f(CW$host\fR is optional. If \f(CW$host\fR is not given then it may instead be +passed as the \f(CW\*(C`Host\*(C'\fR option described below. +.Sp +\&\f(CW%options\fR are passed in a hash like fashion, using key and value pairs. +Possible options are: +.Sp +\&\fBHost\fR \- FTP host to connect to. It may be a single scalar, as defined for +the \f(CW\*(C`PeerAddr\*(C'\fR option in IO::Socket::INET, or a reference to +an array with hosts to try in turn. The "host" method will return the value +which was used to connect to the host. +.Sp +\&\fBFirewall\fR \- The name of a machine which acts as an FTP firewall. This can be +overridden by an environment variable \f(CW\*(C`FTP_FIREWALL\*(C'\fR. If specified, and the +given host cannot be directly connected to, then the +connection is made to the firewall machine and the string \f(CW@hostname\fR is +appended to the login identifier. This kind of setup is also referred to +as an ftp proxy. +.Sp +\&\fBFirewallType\fR \- The type of firewall running on the machine indicated by +\&\fBFirewall\fR. This can be overridden by an environment variable +\&\f(CW\*(C`FTP_FIREWALL_TYPE\*(C'\fR. For a list of permissible types, see the description of +ftp_firewall_type in Net::Config. +.Sp +\&\fBBlockSize\fR \- This is the block size that Net::FTP will use when doing +transfers. (defaults to 10240) +.Sp +\&\fBPort\fR \- The port number to connect to on the remote machine for the +FTP connection +.Sp +\&\fBSSL\fR \- If the connection should be done from start with SSL, contrary to later +upgrade with \f(CW\*(C`starttls\*(C'\fR. +.Sp +\&\fBSSL_*\fR \- SSL arguments which will be applied when upgrading the control or +data connection to SSL. You can use SSL arguments as documented in +IO::Socket::SSL, but it will usually use the right arguments already. +.Sp +\&\fBTimeout\fR \- Set a timeout value in seconds (defaults to 120) +.Sp +\&\fBDebug\fR \- debug level (see the debug method in Net::Cmd) +.Sp +\&\fBPassive\fR \- If set to a non-zero value then all data transfers will +be done using passive mode. If set to zero then data transfers will be +done using active mode. If the machine is connected to the Internet +directly, both passive and active mode should work equally well. +Behind most firewall and NAT configurations passive mode has a better +chance of working. However, in some rare firewall configurations, +active mode actually works when passive mode doesn't. Some really old +FTP servers might not implement passive transfers. If not specified, +then the transfer mode is set by the environment variable +\&\f(CW\*(C`FTP_PASSIVE\*(C'\fR or if that one is not set by the settings done by the +\&\fIlibnetcfg\fR utility. If none of these apply then passive mode is +used. +.Sp +\&\fBHash\fR \- If given a reference to a file handle (e.g., \f(CW\*(C`\e*STDERR\*(C'\fR), +print hash marks (#) on that filehandle every 1024 bytes. This +simply invokes the \f(CWhash()\fR method for you, so that hash marks +are displayed for all transfers. You can, of course, call \f(CWhash()\fR +explicitly whenever you'd like. +.Sp +\&\fBLocalAddr\fR \- Local address to use for all socket connections. This +argument will be passed to the super class, i.e. IO::Socket::INET +or IO::Socket::IP. +.Sp +\&\fBDomain\fR \- Domain to use, i.e. AF_INET or AF_INET6. This +argument will be passed to the IO::Socket super class. +This can be used to enforce IPv4 even with IO::Socket::IP +which would default to IPv6. +\&\fBFamily\fR is accepted as alternative name for \fBDomain\fR. +.Sp +If the constructor fails undef will be returned and an error message will +be in $@ +.SS "Object Methods" +.IX Subsection "Object Methods" +Unless otherwise stated all methods return either a \fItrue\fR or \fIfalse\fR +value, with \fItrue\fR meaning that the operation was a success. When a method +states that it returns a value, failure will be returned as \fIundef\fR or an +empty list. +.PP +\&\f(CW\*(C`Net::FTP\*(C'\fR inherits from \f(CW\*(C`Net::Cmd\*(C'\fR so methods defined in \f(CW\*(C`Net::Cmd\*(C'\fR may +be used to send commands to the remote FTP server in addition to the methods +documented here. +.ie n .IP """login([$login[, $password[, $account]]])""" 4 +.el .IP "\f(CWlogin([$login[, $password[, $account]]])\fR" 4 +.IX Item "login([$login[, $password[, $account]]])" +Log into the remote FTP server with the given login information. If +no arguments are given then the \f(CW\*(C`Net::FTP\*(C'\fR uses the \f(CW\*(C`Net::Netrc\*(C'\fR +package to lookup the login information for the connected host. +If no information is found then a login of \fIanonymous\fR is used. +If no password is given and the login is \fIanonymous\fR then \fIanonymous@\fR +will be used for password. +.Sp +If the connection is via a firewall then the \f(CW\*(C`authorize\*(C'\fR method will +be called with no arguments. +.ie n .IP starttls() 4 +.el .IP \f(CWstarttls()\fR 4 +.IX Item "starttls()" +Upgrade existing plain connection to SSL. +The SSL arguments have to be given in \f(CW\*(C`new\*(C'\fR already because they are needed for +data connections too. +.ie n .IP stoptls() 4 +.el .IP \f(CWstoptls()\fR 4 +.IX Item "stoptls()" +Downgrade existing SSL connection back to plain. +This is needed to work with some FTP helpers at firewalls, which need to see the +PORT and PASV commands and responses to dynamically open the necessary ports. +In this case \f(CW\*(C`starttls\*(C'\fR is usually only done to protect the authorization. +.ie n .IP prot($level) 4 +.el .IP \f(CWprot($level)\fR 4 +.IX Item "prot($level)" +Set what type of data channel protection the client and server will be using. +Only \f(CW$level\fRs "C" (clear) and "P" (private) are supported. +.ie n .IP host() 4 +.el .IP \f(CWhost()\fR 4 +.IX Item "host()" +Returns the value used by the constructor, and passed to the IO::Socket super +class to connect to the host. +.ie n .IP account($acct) 4 +.el .IP \f(CWaccount($acct)\fR 4 +.IX Item "account($acct)" +Set a string identifying the user's account. +.ie n .IP """authorize([$auth[, $resp]])""" 4 +.el .IP "\f(CWauthorize([$auth[, $resp]])\fR" 4 +.IX Item "authorize([$auth[, $resp]])" +This is a protocol used by some firewall ftp proxies. It is used +to authorise the user to send data out. If both arguments are not specified +then \f(CW\*(C`authorize\*(C'\fR uses \f(CW\*(C`Net::Netrc\*(C'\fR to do a lookup. +.ie n .IP site($args) 4 +.el .IP \f(CWsite($args)\fR 4 +.IX Item "site($args)" +Send a SITE command to the remote server and wait for a response. +.Sp +Returns most significant digit of the response code. +.ie n .IP ascii() 4 +.el .IP \f(CWascii()\fR 4 +.IX Item "ascii()" +Transfer file in ASCII. CRLF translation will be done if required +.ie n .IP binary() 4 +.el .IP \f(CWbinary()\fR 4 +.IX Item "binary()" +Transfer file in binary mode. No transformation will be done. +.Sp +\&\fBHint\fR: If both server and client machines use the same line ending for +text files, then it will be faster to transfer all files in binary mode. +.ie n .IP type([$type]) 4 +.el .IP \f(CWtype([$type])\fR 4 +.IX Item "type([$type])" +Set or get if files will be transferred in ASCII or binary mode. +.ie n .IP """rename($oldname, $newname)""" 4 +.el .IP "\f(CWrename($oldname, $newname)\fR" 4 +.IX Item "rename($oldname, $newname)" +Rename a file on the remote FTP server from \f(CW$oldname\fR to \f(CW$newname\fR. This +is done by sending the RNFR and RNTO commands. +.ie n .IP delete($filename) 4 +.el .IP \f(CWdelete($filename)\fR 4 +.IX Item "delete($filename)" +Send a request to the server to delete \f(CW$filename\fR. +.ie n .IP cwd([$dir]) 4 +.el .IP \f(CWcwd([$dir])\fR 4 +.IX Item "cwd([$dir])" +Attempt to change directory to the directory given in \f(CW$dir\fR. If +\&\f(CW$dir\fR is \f(CW".."\fR, the FTP \f(CW\*(C`CDUP\*(C'\fR command is used to attempt to +move up one directory. If no directory is given then an attempt is made +to change the directory to the root directory. +.ie n .IP cdup() 4 +.el .IP \f(CWcdup()\fR 4 +.IX Item "cdup()" +Change directory to the parent of the current directory. +.ie n .IP passive([$passive]) 4 +.el .IP \f(CWpassive([$passive])\fR 4 +.IX Item "passive([$passive])" +Set or get if data connections will be initiated in passive mode. +.ie n .IP pwd() 4 +.el .IP \f(CWpwd()\fR 4 +.IX Item "pwd()" +Returns the full pathname of the current directory. +.ie n .IP restart($where) 4 +.el .IP \f(CWrestart($where)\fR 4 +.IX Item "restart($where)" +Set the byte offset at which to begin the next data transfer. Net::FTP simply +records this value and uses it when during the next data transfer. For this +reason this method will not return an error, but setting it may cause +a subsequent data transfer to fail. +.ie n .IP """rmdir($dir[, $recurse])""" 4 +.el .IP "\f(CWrmdir($dir[, $recurse])\fR" 4 +.IX Item "rmdir($dir[, $recurse])" +Remove the directory with the name \f(CW$dir\fR. If \f(CW$recurse\fR is \fItrue\fR then +\&\f(CW\*(C`rmdir\*(C'\fR will attempt to delete everything inside the directory. +.ie n .IP """mkdir($dir[, $recurse])""" 4 +.el .IP "\f(CWmkdir($dir[, $recurse])\fR" 4 +.IX Item "mkdir($dir[, $recurse])" +Create a new directory with the name \f(CW$dir\fR. If \f(CW$recurse\fR is \fItrue\fR then +\&\f(CW\*(C`mkdir\*(C'\fR will attempt to create all the directories in the given path. +.Sp +Returns the full pathname to the new directory. +.ie n .IP """alloc($size[, $record_size])""" 4 +.el .IP "\f(CWalloc($size[, $record_size])\fR" 4 +.IX Item "alloc($size[, $record_size])" +The alloc command allows you to give the ftp server a hint about the size +of the file about to be transferred using the ALLO ftp command. Some storage +systems use this to make intelligent decisions about how to store the file. +The \f(CW$size\fR argument represents the size of the file in bytes. The +\&\f(CW$record_size\fR argument indicates a maximum record or page size for files +sent with a record or page structure. +.Sp +The size of the file will be determined, and sent to the server +automatically for normal files so that this method need only be called if +you are transferring data from a socket, named pipe, or other stream not +associated with a normal file. +.ie n .IP ls([$dir]) 4 +.el .IP \f(CWls([$dir])\fR 4 +.IX Item "ls([$dir])" +Get a directory listing of \f(CW$dir\fR, or the current directory. +.Sp +In an array context, returns a list of lines returned from the server. In +a scalar context, returns a reference to a list. +.ie n .IP dir([$dir]) 4 +.el .IP \f(CWdir([$dir])\fR 4 +.IX Item "dir([$dir])" +Get a directory listing of \f(CW$dir\fR, or the current directory in long format. +.Sp +In an array context, returns a list of lines returned from the server. In +a scalar context, returns a reference to a list. +.ie n .IP """get($remote_file[, $local_file[, $where]])""" 4 +.el .IP "\f(CWget($remote_file[, $local_file[, $where]])\fR" 4 +.IX Item "get($remote_file[, $local_file[, $where]])" +Get \f(CW$remote_file\fR from the server and store locally. \f(CW$local_file\fR may be +a filename or a filehandle. If not specified, the file will be stored in +the current directory with the same leafname as the remote file. +.Sp +If \f(CW$where\fR is given then the first \f(CW$where\fR bytes of the file will +not be transferred, and the remaining bytes will be appended to +the local file if it already exists. +.Sp +Returns \f(CW$local_file\fR, or the generated local file name if \f(CW$local_file\fR +is not given. If an error was encountered undef is returned. +.ie n .IP """put($local_file[, $remote_file])""" 4 +.el .IP "\f(CWput($local_file[, $remote_file])\fR" 4 +.IX Item "put($local_file[, $remote_file])" +Put a file on the remote server. \f(CW$local_file\fR may be a name or a filehandle. +If \f(CW$local_file\fR is a filehandle then \f(CW$remote_file\fR must be specified. If +\&\f(CW$remote_file\fR is not specified then the file will be stored in the current +directory with the same leafname as \f(CW$local_file\fR. +.Sp +Returns \f(CW$remote_file\fR, or the generated remote filename if \f(CW$remote_file\fR +is not given. +.Sp +\&\fBNOTE\fR: If for some reason the transfer does not complete and an error is +returned then the contents that had been transferred will not be remove +automatically. +.ie n .IP """put_unique($local_file[, $remote_file])""" 4 +.el .IP "\f(CWput_unique($local_file[, $remote_file])\fR" 4 +.IX Item "put_unique($local_file[, $remote_file])" +Same as put but uses the \f(CW\*(C`STOU\*(C'\fR command. +.Sp +Returns the name of the file on the server. +.ie n .IP """append($local_file[, $remote_file])""" 4 +.el .IP "\f(CWappend($local_file[, $remote_file])\fR" 4 +.IX Item "append($local_file[, $remote_file])" +Same as put but appends to the file on the remote server. +.Sp +Returns \f(CW$remote_file\fR, or the generated remote filename if \f(CW$remote_file\fR +is not given. +.ie n .IP unique_name() 4 +.el .IP \f(CWunique_name()\fR 4 +.IX Item "unique_name()" +Returns the name of the last file stored on the server using the +\&\f(CW\*(C`STOU\*(C'\fR command. +.ie n .IP mdtm($file) 4 +.el .IP \f(CWmdtm($file)\fR 4 +.IX Item "mdtm($file)" +Returns the \fImodification time\fR of the given file +.ie n .IP size($file) 4 +.el .IP \f(CWsize($file)\fR 4 +.IX Item "size($file)" +Returns the size in bytes for the given file as stored on the remote server. +.Sp +\&\fBNOTE\fR: The size reported is the size of the stored file on the remote server. +If the file is subsequently transferred from the server in ASCII mode +and the remote server and local machine have different ideas about +"End Of Line" then the size of file on the local machine after transfer +may be different. +.ie n .IP supported($cmd) 4 +.el .IP \f(CWsupported($cmd)\fR 4 +.IX Item "supported($cmd)" +Returns TRUE if the remote server supports the given command. +.ie n .IP """hash([$filehandle_glob_ref[, $bytes_per_hash_mark]])""" 4 +.el .IP "\f(CWhash([$filehandle_glob_ref[, $bytes_per_hash_mark]])\fR" 4 +.IX Item "hash([$filehandle_glob_ref[, $bytes_per_hash_mark]])" +Called without parameters, or with the first argument false, hash marks +are suppressed. If the first argument is true but not a reference to a +file handle glob, then \e*STDERR is used. The second argument is the number +of bytes per hash mark printed, and defaults to 1024. In all cases the +return value is a reference to an array of two: the filehandle glob reference +and the bytes per hash mark. +.ie n .IP feature($name) 4 +.el .IP \f(CWfeature($name)\fR 4 +.IX Item "feature($name)" +Determine if the server supports the specified feature. The return +value is a list of lines the server responded with to describe the +options that it supports for the given feature. If the feature is +unsupported then the empty list is returned. +.Sp +.Vb 3 +\& if ($ftp\->feature( \*(AqMDTM\*(Aq )) { +\& # Do something +\& } +\& +\& if (grep { /\ebTLS\eb/ } $ftp\->feature(\*(AqAUTH\*(Aq)) { +\& # Server supports TLS +\& } +.Ve +.PP +The following methods can return different results depending on +how they are called. If the user explicitly calls either +of the \f(CW\*(C`pasv\*(C'\fR or \f(CW\*(C`port\*(C'\fR methods then these methods will +return a \fItrue\fR or \fIfalse\fR value. If the user does not +call either of these methods then the result will be a +reference to a \f(CW\*(C`Net::FTP::dataconn\*(C'\fR based object. +.ie n .IP nlst([$dir]) 4 +.el .IP \f(CWnlst([$dir])\fR 4 +.IX Item "nlst([$dir])" +Send an \f(CW\*(C`NLST\*(C'\fR command to the server, with an optional parameter. +.ie n .IP list([$dir]) 4 +.el .IP \f(CWlist([$dir])\fR 4 +.IX Item "list([$dir])" +Same as \f(CW\*(C`nlst\*(C'\fR but using the \f(CW\*(C`LIST\*(C'\fR command +.ie n .IP retr($file) 4 +.el .IP \f(CWretr($file)\fR 4 +.IX Item "retr($file)" +Begin the retrieval of a file called \f(CW$file\fR from the remote server. +.ie n .IP stor($file) 4 +.el .IP \f(CWstor($file)\fR 4 +.IX Item "stor($file)" +Tell the server that you wish to store a file. \f(CW$file\fR is the +name of the new file that should be created. +.ie n .IP stou($file) 4 +.el .IP \f(CWstou($file)\fR 4 +.IX Item "stou($file)" +Same as \f(CW\*(C`stor\*(C'\fR but using the \f(CW\*(C`STOU\*(C'\fR command. The name of the unique +file which was created on the server will be available via the \f(CW\*(C`unique_name\*(C'\fR +method after the data connection has been closed. +.ie n .IP appe($file) 4 +.el .IP \f(CWappe($file)\fR 4 +.IX Item "appe($file)" +Tell the server that we want to append some data to the end of a file +called \f(CW$file\fR. If this file does not exist then create it. +.PP +If for some reason you want to have complete control over the data connection, +this includes generating it and calling the \f(CW\*(C`response\*(C'\fR method when required, +then the user can use these methods to do so. +.PP +However calling these methods only affects the use of the methods above that +can return a data connection. They have no effect on methods \f(CW\*(C`get\*(C'\fR, \f(CW\*(C`put\*(C'\fR, +\&\f(CW\*(C`put_unique\*(C'\fR and those that do not require data connections. +.ie n .IP port([$port]) 4 +.el .IP \f(CWport([$port])\fR 4 +.IX Item "port([$port])" +.PD 0 +.ie n .IP eprt([$port]) 4 +.el .IP \f(CWeprt([$port])\fR 4 +.IX Item "eprt([$port])" +.PD +Send a \f(CW\*(C`PORT\*(C'\fR (IPv4) or \f(CW\*(C`EPRT\*(C'\fR (IPv6) command to the server. If \f(CW$port\fR is +specified then it is sent to the server. If not, then a listen socket is created +and the correct information sent to the server. +.ie n .IP pasv() 4 +.el .IP \f(CWpasv()\fR 4 +.IX Item "pasv()" +.PD 0 +.ie n .IP epsv() 4 +.el .IP \f(CWepsv()\fR 4 +.IX Item "epsv()" +.PD +Tell the server to go into passive mode (\f(CW\*(C`pasv\*(C'\fR for IPv4, \f(CW\*(C`epsv\*(C'\fR for IPv6). +Returns the text that represents the port on which the server is listening, this +text is in a suitable form to send to another ftp server using the \f(CW\*(C`port\*(C'\fR or +\&\f(CW\*(C`eprt\*(C'\fR method. +.PP +The following methods can be used to transfer files between two remote +servers, providing that these two servers can connect directly to each other. +.ie n .IP """pasv_xfer($src_file, $dest_server[, $dest_file ])""" 4 +.el .IP "\f(CWpasv_xfer($src_file, $dest_server[, $dest_file ])\fR" 4 +.IX Item "pasv_xfer($src_file, $dest_server[, $dest_file ])" +This method will do a file transfer between two remote ftp servers. If +\&\f(CW$dest_file\fR is omitted then the leaf name of \f(CW$src_file\fR will be used. +.ie n .IP """pasv_xfer_unique($src_file, $dest_server[, $dest_file ])""" 4 +.el .IP "\f(CWpasv_xfer_unique($src_file, $dest_server[, $dest_file ])\fR" 4 +.IX Item "pasv_xfer_unique($src_file, $dest_server[, $dest_file ])" +Like \f(CW\*(C`pasv_xfer\*(C'\fR but the file is stored on the remote server using +the STOU command. +.ie n .IP pasv_wait($non_pasv_server) 4 +.el .IP \f(CWpasv_wait($non_pasv_server)\fR 4 +.IX Item "pasv_wait($non_pasv_server)" +This method can be used to wait for a transfer to complete between a passive +server and a non-passive server. The method should be called on the passive +server with the \f(CW\*(C`Net::FTP\*(C'\fR object for the non-passive server passed as an +argument. +.ie n .IP abort() 4 +.el .IP \f(CWabort()\fR 4 +.IX Item "abort()" +Abort the current data transfer. +.ie n .IP quit() 4 +.el .IP \f(CWquit()\fR 4 +.IX Item "quit()" +Send the QUIT command to the remote FTP server and close the socket connection. +.SS "Methods for the Adventurous" +.IX Subsection "Methods for the Adventurous" +.ie n .IP """quot($cmd[, $args])""" 4 +.el .IP "\f(CWquot($cmd[, $args])\fR" 4 +.IX Item "quot($cmd[, $args])" +Send a command, that Net::FTP does not directly support, to the remote +server and wait for a response. +.Sp +Returns most significant digit of the response code. +.Sp +\&\fBWARNING\fR This call should only be used on commands that do not require +data connections. Misuse of this method can hang the connection. +.ie n .IP can_inet6() 4 +.el .IP \f(CWcan_inet6()\fR 4 +.IX Item "can_inet6()" +Returns whether we can use IPv6. +.ie n .IP can_ssl() 4 +.el .IP \f(CWcan_ssl()\fR 4 +.IX Item "can_ssl()" +Returns whether we can use SSL. +.SS "The dataconn Class" +.IX Subsection "The dataconn Class" +Some of the methods defined in \f(CW\*(C`Net::FTP\*(C'\fR return an object which will +be derived from the \f(CW\*(C`Net::FTP::dataconn\*(C'\fR class. See Net::FTP::dataconn for +more details. +.SS Unimplemented +.IX Subsection "Unimplemented" +The following RFC959 commands have not been implemented: +.ie n .IP """SMNT""" 4 +.el .IP \f(CWSMNT\fR 4 +.IX Item "SMNT" +Mount a different file system structure without changing login or +accounting information. +.ie n .IP """HELP""" 4 +.el .IP \f(CWHELP\fR 4 +.IX Item "HELP" +Ask the server for "helpful information" (that's what the RFC says) on +the commands it accepts. +.ie n .IP """MODE""" 4 +.el .IP \f(CWMODE\fR 4 +.IX Item "MODE" +Specifies transfer mode (stream, block or compressed) for file to be +transferred. +.ie n .IP """SYST""" 4 +.el .IP \f(CWSYST\fR 4 +.IX Item "SYST" +Request remote server system identification. +.ie n .IP """STAT""" 4 +.el .IP \f(CWSTAT\fR 4 +.IX Item "STAT" +Request remote server status. +.ie n .IP """STRU""" 4 +.el .IP \f(CWSTRU\fR 4 +.IX Item "STRU" +Specifies file structure for file to be transferred. +.ie n .IP """REIN""" 4 +.el .IP \f(CWREIN\fR 4 +.IX Item "REIN" +Reinitialize the connection, flushing all I/O and account information. +.SH EXPORTS +.IX Header "EXPORTS" +\&\fINone\fR. +.SH "KNOWN BUGS" +.IX Header "KNOWN BUGS" +See <https://rt.cpan.org/Dist/Display.html?Status=Active&Queue=libnet>. +.SS "Reporting Bugs" +.IX Subsection "Reporting Bugs" +When reporting bugs/problems please include as much information as possible. +It may be difficult for me to reproduce the problem as almost every setup +is different. +.PP +A small script which yields the problem will probably be of help. It would +also be useful if this script was run with the extra options \f(CW\*(C`Debug => 1\*(C'\fR +passed to the constructor, and the output sent with the bug report. If you +cannot include a small script then please include a Debug trace from a +run of your program which does yield the problem. +.SH "SEE ALSO" +.IX Header "SEE ALSO" +Net::Netrc, +Net::Cmd, +IO::Socket::SSL; +.PP +\&\fBftp\fR\|(1), +\&\fBftpd\fR\|(8); +.PP +<https://www.ietf.org/rfc/rfc959.txt>, +<https://www.ietf.org/rfc/rfc2428.txt>, +<https://www.ietf.org/rfc/rfc4217.txt>. +.SH ACKNOWLEDGEMENTS +.IX Header "ACKNOWLEDGEMENTS" +Henry Gabryjelski <henryg@WPI.EDU <mailto:henryg@WPI.EDU>> \- for the +suggestion of creating directories recursively. +.PP +Nathan Torkington <gnat@frii.com <mailto:gnat@frii.com>> \- for some +input on the documentation. +.PP +Roderick Schertler <roderick@gate.net <mailto:roderick@gate.net>> \- for +various inputs +.SH AUTHOR +.IX Header "AUTHOR" +Graham Barr <gbarr@pobox.com <mailto:gbarr@pobox.com>>. +.PP +Steve Hay <shay@cpan.org <mailto:shay@cpan.org>> is now maintaining +libnet as of version 1.22_02. +.SH COPYRIGHT +.IX Header "COPYRIGHT" +Copyright (C) 1995\-2004 Graham Barr. All rights reserved. +.PP +Copyright (C) 2013\-2017, 2020, 2022 Steve Hay. All rights reserved. +.SH LICENCE +.IX Header "LICENCE" +This module is free software; you can redistribute it and/or modify it under the +same terms as Perl itself, i.e. under the terms of either the GNU General Public +License or the Artistic License, as specified in the \fILICENCE\fR file. +.SH VERSION +.IX Header "VERSION" +Version 3.15 +.SH DATE +.IX Header "DATE" +20 March 2023 +.SH HISTORY +.IX Header "HISTORY" +See the \fIChanges\fR file. |