CONTENIDO
- NOMBRE
- SINOPSIS
- DESCRIPCIÓN
- VISIÓN DE CONJUNTO
- CONSTRUCTOR
- MÉTODOS
- Métodos para los aventureros
- LA CLASE de dataconn
- SIN IMPLEMENTAR
- INFORMAR ERRORES
- AUTOR
- VER TAMBIÉN
- EJEMPLOS DE USO
- CREDITOS
- DERECHOS DE AUTOR
- LICENCIA
NOMBRE
Net :: FTP – Clase de cliente FTP
SINOPSIS
use Net::FTP;$ftp= Net::FTP->new("some.host.name", Debug =>0)ordie"Cannot connect to some.host.name: [email protected]";$ftp->login("anonymous",'[email protected]')ordie"Cannot login ",$ftp->message;$ftp->cwd("/pub")ordie"Cannot change working directory ",$ftp->message;$ftp->get("that.file")ordie"get failed ",$ftp->message;$ftp->quit;
DESCRIPCIÓN
Net::FTP
es una clase que implementa un cliente FTP simple en Perl como se describe en RFC959. Proporciona envoltorios para el subconjunto comúnmente utilizado de los comandos RFC959. Si está instalado IO :: Socket :: IP o IO :: Socket :: INET6, también proporciona soporte para IPv6 como se define en RFC2428. Y con IO :: Socket :: SSL instalado, proporciona soporte para FTPS implícito y FTPS explícito como se define en RFC4217.
La clase Net :: FTP es una subclase de Net :: Cmd y (dependiendo de la disponibilidad) de IO :: Socket :: IP, IO :: Socket :: INET6 o IO :: Socket :: INET.
VISIÓN DE CONJUNTO
FTP son las siglas de File Transfer Protocol (Protocolo de transferencia de archivos). Es una forma de transferir archivos entre máquinas en red. El protocolo define un cliente (cuyos comandos son proporcionados por este módulo) y un servidor (no implementado en este módulo). La comunicación siempre la inicia el cliente y el servidor responde con un mensaje y un código de estado (y en ocasiones con datos).
El protocolo FTP permite que los archivos se envíen o se recuperen del servidor. Cada transferencia implica un archivo local (en el cliente) y un archivo remoto (en el servidor). En este módulo, se utilizará el mismo nombre de archivo para local y remoto si solo se especifica uno. Esto significa que la transferencia de archivos remotos /path/to/file
intentará poner ese archivo en /path/to/file
localmente, a menos que especifique un nombre de archivo local.
El protocolo también define varios estándares traducciones que puede sufrir el archivo durante la transferencia. Estos son ASCII, EBCDIC, binarios y bytes. ASCII es el tipo predeterminado e indica que el remitente de los archivos traducirá los extremos de las líneas a una representación estándar que el receptor luego traducirá de nuevo a su representación local. EBCDIC indica que el archivo que se está transfiriendo está en formato EBCDIC. El formato binario (también conocido como imagen) envía los datos como un flujo de bits contiguo. El formato de bytes transfiere los datos como bytes, cuyos valores siguen siendo los mismos independientemente de las diferencias en el tamaño de bytes entre las dos máquinas (en teoría, en la práctica, solo debe usar esto si realmente sabe lo que está haciendo). Esta clase no es compatible con los formatos EBCDIC o de bytes y, en su lugar, se utilizará de forma predeterminada en binario si se intentan.
CONSTRUCTOR
-
nuevo ([ HOST ] [, OPTIONS ])
-
Este es el constructor de un nuevo objeto Net :: FTP.
HOST
es el nombre del host remoto al que se requiere una conexión FTP.HOST
es opcional. SiHOST
no se da, entonces se puede pasar como elHost
opción que se describe a continuación.OPTIONS
se pasan en forma de hash, utilizando pares de clave y valor. Las posibles opciones son:Anfitrión – Host FTP al que conectarse. Puede ser un solo escalar, como se define para el
PeerAddr
en IO :: Socket :: INET, o una referencia a una matriz con hosts para probar a su vez. El método “host” devolverá el valor que se utilizó para conectarse al host.Cortafuegos – El nombre de una máquina que actúa como firewall FTP. Esto puede ser anulado por una variable de entorno.
FTP_FIREWALL
. Si se especifica, y el host dado no se puede conectar directamente, entonces la conexión se realiza a la máquina del cortafuegos y la cadena@hostname
se agrega al identificador de inicio de sesión. Este tipo de configuración también se conoce como proxy ftp.Tipo de cortafuegos – El tipo de firewall que se ejecuta en la máquina indicado por Cortafuegos. Esto puede ser anulado por una variable de entorno.
FTP_FIREWALL_TYPE
. Para obtener una lista de los tipos permitidos, consulte la descripción de ftp_firewall_type en Net :: Config.Tamaño de bloque – Este es el tamaño de bloque que Net :: FTP utilizará al realizar transferencias. (predeterminado en 10240)
Puerto – El número de puerto al que conectarse en la máquina remota para la conexión FTP
SSL – Si la conexión se debe realizar desde el principio con SSL, al contrario de la actualización posterior con
starttls
.SSL_ * – Argumentos SSL que se aplicarán al actualizar el control o la conexión de datos a SSL. Puede usar argumentos SSL como se documenta en IO :: Socket :: SSL, pero normalmente ya usará los argumentos correctos.
Se acabó el tiempo – Establecer un valor de tiempo de espera en segundos (predeterminado en 120)
Depurar – nivel de depuración (ver el método de depuración en Net :: Cmd)
Pasivo – Si se establece en un valor distinto de cero, todas las transferencias de datos se realizarán utilizando el modo pasivo. Si se establece en cero, las transferencias de datos se realizarán utilizando el modo activo. Si la máquina está conectada a Internet directamente, tanto el modo pasivo como el activo deberían funcionar igualmente bien. Detrás de la mayoría de las configuraciones de firewall y NAT, el modo pasivo tiene más posibilidades de funcionar. Sin embargo, en algunas configuraciones de firewall poco comunes, el modo activo realmente funciona cuando el modo pasivo no lo hace. Es posible que algunos servidores FTP realmente antiguos no implementen transferencias pasivas. Si no se especifica, el modo de transferencia lo establece la variable de entorno
FTP_PASSIVE
o si ese no está establecido por la configuración realizada por el libnetcfg utilidad. Si no se aplica ninguno de estos, se utiliza el modo pasivo.Picadillo – Si se le da una referencia a un identificador de archivo (por ejemplo,
*STDERR
), imprima las marcas de almohadilla (#) en ese identificador de archivo cada 1024 bytes. Esto simplemente invoca lahash()
método para usted, de modo que se muestren las marcas de almohadilla para todas las transferencias. Puedes, por supuesto, llamarhash()
explícitamente siempre que lo desee.LocalAddr – Dirección local que se utilizará para todas las conexiones de enchufe. Este argumento se pasará a la superclase, es decir, IO :: Socket :: INET o IO :: Socket :: IP.
Dominio – Dominio a utilizar, es decir, AF_INET o AF_INET6. Este argumento se pasará a la superclase IO :: Socket. Esto se puede usar para hacer cumplir IPv4 incluso con IO :: Socket :: IP, que por defecto sería IPv6. Familia se acepta como nombre alternativo para Dominio.
Si el constructor falla, se devolverá undef y aparecerá un mensaje de error en [email protected]
MÉTODOS
A menos que se indique lo contrario, todos los métodos devuelven un cierto o falso valor, con cierto lo que significa que la operación fue un éxito. Cuando un método indica que devuelve un valor, el error se devolverá como indef o una lista vacía.
Net::FTP
hereda de Net::Cmd
así que los métodos definidos en Net::Cmd
se puede utilizar para enviar comandos al servidor FTP remoto además de los métodos documentados aquí.
-
acceso ([LOGIN [,PASSWORD [, ACCOUNT] ])
-
Inicie sesión en el servidor FTP remoto con la información de inicio de sesión proporcionada. Si no se dan argumentos, entonces el
Net::FTP
usa elNet::Netrc
package para buscar la información de inicio de sesión del host conectado. Si no se encuentra información, un inicio de sesión de anónimo se utiliza. Si no se proporciona una contraseña y el inicio de sesión es anónimo luego [email protected] se utilizará como contraseña.Si la conexión se realiza a través de un cortafuegos,
authorize
se llamará al método sin argumentos. -
starttls ()
-
Actualice la conexión simple existente a SSL. Los argumentos SSL deben darse en
new
ya porque también son necesarios para las conexiones de datos. -
stoptls ()
-
Degradar la conexión SSL existente a normal. Esto es necesario para trabajar con algunos ayudantes de FTP en los firewalls, que necesitan ver los comandos PORT y PASV y las respuestas para abrir dinámicamente los puertos necesarios. En este caso
starttls
generalmente solo se hace para proteger la autorización. -
prot (NIVEL)
-
Establezca el tipo de protección del canal de datos que utilizarán el cliente y el servidor. Solamente
LEVEL
s Se admiten “C” (borrar) y “P” (privado). -
anfitrión ()
-
Devuelve el valor utilizado por el constructor y pasado a la superclase IO :: Socket para conectarse al host.
-
cuenta (ACCT)
-
Establezca una cadena que identifique la cuenta del usuario.
-
autorizar ( [AUTH [, RESP]])
-
Este es un protocolo utilizado por algunos servidores proxy ftp de firewall. Se utiliza para autorizar al usuario a enviar datos. Si no se especifican ambos argumentos, entonces
authorize
usosNet::Netrc
para hacer una búsqueda. -
sitio (ARGS)
-
Envíe un comando SITE al servidor remoto y espere una respuesta.
Devuelve el dígito más significativo del código de respuesta.
-
ascii ()
-
Transferir archivo en ASCII. La traducción CRLF se realizará si es necesario
-
binario ()
-
Transferir archivo en modo binario. No se hará ninguna transformación.
Insinuación: Si tanto el servidor como el cliente utilizan el mismo final de línea para los archivos de texto, será más rápido transferir todos los archivos en modo binario.
-
escribe ( [ TYPE ] )
-
Establezca u obtenga si los archivos se transferirán en ASCII o en modo binario.
-
renombrar (OLDNAME, NEWNAME)
-
Cambiar el nombre de un archivo en el servidor FTP remoto desde
OLDNAME
paraNEWNAME
. Esto se hace enviando los comandos RNFR y RNTO. -
eliminar (NOMBRE DE ARCHIVO)
-
Envíe una solicitud al servidor para eliminar
FILENAME
. -
cwd [ DIR ] )
-
Intente cambiar el directorio al directorio dado en
$dir
. Si$dir
es".."
, el FTPCDUP
El comando se usa para intentar subir un directorio. Si no se proporciona un directorio, se intenta cambiar el directorio al directorio raíz. -
cdup ()
-
Cambie el directorio al padre del directorio actual.
-
pasivo [ PASSIVE ] )
-
Establezca u obtenga si las conexiones de datos se iniciarán en modo pasivo.
-
pwd ()
-
Devuelve el nombre de ruta completo del directorio actual.
-
reiniciar (DONDE)
-
Establezca el desplazamiento de bytes en el que comenzará la siguiente transferencia de datos. Net :: FTP simplemente registra este valor y lo usa durante la próxima transferencia de datos. Por esta razón, este método no devolverá un error, pero configurarlo puede hacer que falle una transferencia de datos posterior.
-
rmdir (DIR [, RECURSE ])
-
Eliminar el directorio con el nombre
DIR
. SiRECURSE
es cierto luegormdir
intentará borrar todo dentro del directorio. -
mkdir (DIR [, RECURSE ])
-
Crea un nuevo directorio con el nombre
DIR
. SiRECURSE
es cierto luegomkdir
intentará crear todos los directorios en la ruta dada.Devuelve el nombre de ruta completo al nuevo directorio.
-
alloc (TAMAÑO [, RECORD_SIZE] )
-
El comando alloc le permite darle al servidor ftp una pista sobre el tamaño del archivo que está a punto de ser transferido usando el comando ALLO ftp. Algunos sistemas de almacenamiento utilizan esto para tomar decisiones inteligentes sobre cómo almacenar el archivo. los
SIZE
El argumento representa el tamaño del archivo en bytes. losRECORD_SIZE
El argumento indica un tamaño máximo de registro o página para archivos enviados con una estructura de registro o página.El tamaño del archivo se determinará y se enviará al servidor automáticamente para archivos normales, por lo que este método solo necesita llamarse si está transfiriendo datos desde un socket, canalización con nombre u otro flujo no asociado con un archivo normal.
-
ls [ DIR ] )
-
Obtenga una lista de directorio de
DIR
, o el directorio actual.En un contexto de matriz, devuelve una lista de líneas devueltas por el servidor. En un contexto escalar, devuelve una referencia a una lista.
-
dir ( [ DIR ] )
-
Obtenga una lista de directorio de
DIR
, o el directorio actual en formato largo.En un contexto de matriz, devuelve una lista de líneas devueltas por el servidor. En un contexto escalar, devuelve una referencia a una lista.
-
obtener (REMOTE_FILE [, LOCAL_FILE [, WHERE]])
-
Obtener
REMOTE_FILE
desde el servidor y almacenar localmente.LOCAL_FILE
puede ser un nombre de archivo o un identificador de archivo. Si no se especifica, el archivo se almacenará en el directorio actual con el mismo nombre de hoja que el archivo remoto.Si
WHERE
se da entonces el primeroWHERE
Los bytes del archivo no se transferirán y los bytes restantes se agregarán al archivo local si ya existe.Devoluciones
LOCAL_FILE
, o el nombre del archivo local generado siLOCAL_FILE
no se da. Si se encontró un error, se devuelve undef. -
poner (LOCAL_FILE [, REMOTE_FILE ] )
-
Ponga un archivo en el servidor remoto.
LOCAL_FILE
puede ser un nombre o un identificador de archivo. SiLOCAL_FILE
es un identificador de archivo entoncesREMOTE_FILE
debe especificarse. SiREMOTE_FILE
no se especifica, el archivo se almacenará en el directorio actual con el mismo nombre de hoja queLOCAL_FILE
.Devoluciones
REMOTE_FILE
, o el nombre de archivo remoto generado siREMOTE_FILE
no se da.NOTA: Si por alguna razón la transferencia no se completa y se devuelve un error, el contenido que se había transferido no se eliminará automáticamente.
-
put_unique (LOCAL_FILE [, REMOTE_FILE ] )
-
Igual que put pero usa el
STOU
mando.Devuelve el nombre del archivo en el servidor.
-
añadir (LOCAL_FILE [, REMOTE_FILE ] )
-
Igual que put pero se agrega al archivo en el servidor remoto.
Devoluciones
REMOTE_FILE
, o el nombre de archivo remoto generado siREMOTE_FILE
no se da. -
nombre único ()
-
Devuelve el nombre del último archivo almacenado en el servidor utilizando el
STOU
mando. -
mdtm (ARCHIVO)
-
Devuelve el tiempo de modificación del archivo dado
-
tamaño (ARCHIVO)
-
Devuelve el tamaño en bytes del archivo dado almacenado en el servidor remoto.
NOTA: El tamaño informado es el tamaño del archivo almacenado en el servidor remoto. Si el archivo se transfiere posteriormente desde el servidor en modo ASCII y el servidor remoto y la máquina local tienen ideas diferentes sobre el “Fin de línea”, entonces el tamaño del archivo en la máquina local después de la transferencia puede ser diferente.
-
apoyado (CMD)
-
Devuelve VERDADERO si el servidor remoto admite el comando dado.
-
hash [FILEHANDLE_GLOB_REF],[ BYTES_PER_HASH_MARK] )
-
Llamadas sin parámetros, o con el primer argumento falso, se suprimen las marcas de almohadilla. Si el primer argumento es verdadero pero no una referencia a un identificador de archivo glob, entonces se usa * STDERR. El segundo argumento es el número de bytes por marca de almohadilla impresa, y el valor predeterminado es 1024. En todos los casos, el valor de retorno es una referencia a una matriz de dos: la referencia global del identificador de archivo y los bytes por marca de almohadilla.
-
característica (NOMBRE)
-
Determine si el servidor admite la función especificada. El valor de retorno es una lista de líneas con las que respondió el servidor para describir las opciones que admite para la función dada. Si la función no es compatible, se devuelve la lista vacía.
if($ftp->feature('MDTM'))# Do somethingif(grep /bTLSb/$ftp->feature('AUTH'))# Server supports TLS
Los siguientes métodos pueden devolver resultados diferentes según cómo se llamen. Si el usuario llama explícitamente a cualquiera de los pasv
o port
métodos entonces estos métodos devolverán un cierto o falso valor. Si el usuario no llama a ninguno de estos métodos, el resultado será una referencia a un Net::FTP::dataconn
objeto basado.
-
nlst [ DIR ] )
-
Mandar un
NLST
comando al servidor, con un parámetro opcional. -
lista ( [ DIR ] )
-
Igual que
nlst
pero usando elLIST
mando -
retr (ARCHIVO)
-
Comience la recuperación de un archivo llamado
FILE
desde el servidor remoto. -
stor (ARCHIVO)
-
Dígale al servidor que desea almacenar un archivo.
FILE
es el nombre del nuevo archivo que se debe crear. -
stou (ARCHIVO)
-
Igual que
stor
pero usando elSTOU
mando. El nombre del archivo único que se creó en el servidor estará disponible a través delunique_name
método después de que se haya cerrado la conexión de datos. -
appe (ARCHIVO)
-
Dígale al servidor que queremos agregar algunos datos al final de un archivo llamado
FILE
. Si este archivo no existe, créelo.
Si por alguna razón desea tener un control completo sobre la conexión de datos, esto incluye generarla y llamar al response
cuando sea necesario, el usuario puede utilizar estos métodos para hacerlo.
Sin embargo, llamar a estos métodos solo afecta el uso de los métodos anteriores que pueden devolver una conexión de datos. No tienen ningún efecto sobre los métodos. get
, put
, put_unique
y aquellos que no requieren conexiones de datos.
-
Puerto ( [ PORT ] )
-
eprt [ PORT ] )
-
Enviar una
PORT
(IPv4) oEPRT
(IPv6) al servidor. SiPORT
se especifica y luego se envía al servidor. De lo contrario, se crea un socket de escucha y se envía la información correcta al servidor. -
pasv ()
-
epsv ()
-
Dile al servidor que entre en modo pasivo (
pasv
para IPv4,epsv
para IPv6). Devuelve el texto que representa el puerto en el que está escuchando el servidor, este texto está en una forma adecuada para enviar a otro servidor ftp usando elport
oeprt
método.
Los siguientes métodos se pueden utilizar para transferir archivos entre dos servidores remotos, siempre que estos dos servidores puedan conectarse directamente entre sí.
-
pasv_xfer (SRC_FILE, DEST_SERVER [, DEST_FILE ] )
-
Este método realizará una transferencia de archivos entre dos servidores ftp remotos. Si
DEST_FILE
se omite, entonces el nombre de la hoja deSRC_FILE
se utilizará. -
pasv_xfer_unique (SRC_FILE, DEST_SERVER [, DEST_FILE ] )
-
Igual que
pasv_xfer
pero el archivo se almacena en el servidor remoto usando el comando STOU. -
pasv_wait (NON_PASV_SERVER)
-
Este método se puede utilizar para esperar a que se complete una transferencia entre un servidor pasivo y un servidor no pasivo. El método debe llamarse en el servidor pasivo con el
Net::FTP
objeto para el servidor no pasivo pasado como argumento. -
abortar ()
-
Abortar la transferencia de datos actual.
-
dejar ()
-
Envíe el comando QUIT al servidor FTP remoto y cierre la conexión del socket.
Métodos para los aventureros
-
quot (CMD [,ARGS])
-
Envíe un comando, que Net :: FTP no admita directamente, al servidor remoto y espere una respuesta.
Devuelve el dígito más significativo del código de respuesta.
ADVERTENCIA Esta llamada solo debe usarse en comandos que no requieran conexiones de datos. El mal uso de este método puede bloquear la conexión.
-
can_inet6 ()
-
Devuelve si podemos usar IPv6.
-
can_ssl ()
-
Devuelve si podemos usar SSL.
LA CLASE de dataconn
Algunos de los métodos definidos en Net::FTP
devolver un objeto que se derivará de la Net::FTP::dataconn
clase. Consulte Net :: FTP :: dataconn para obtener más detalles.
SIN IMPLEMENTAR
No se han implementado los siguientes comandos RFC959:
- SMNT
-
Monte una estructura de sistema de archivos diferente sin cambiar la información de inicio de sesión o de contabilidad.
- AYUDA
-
Pídale al servidor “información útil” (eso es lo que dice el RFC) sobre los comandos que acepta.
- MODO
-
Especifica el modo de transferencia (secuencia, bloque o comprimido) para que se transfiera el archivo.
- SYST
-
Solicite la identificación del sistema del servidor remoto.
- ESTADÍSTICA
-
Solicita el estado del servidor remoto.
- STRU
-
Especifica la estructura del archivo para transferirlo.
- RIENDA
-
Reinicie la conexión, eliminando toda la información de E / S y de la cuenta.
INFORMAR ERRORES
Cuando informe errores / problemas, incluya la mayor cantidad de información posible. Puede resultarme difícil reproducir el problema, ya que casi todas las configuraciones son diferentes.
Un pequeño script que muestre el problema probablemente será de ayuda. También sería útil si este script se ejecutara con las opciones adicionales Debug => 1
se pasa al constructor y la salida se envía con el informe de error. Si no puede incluir una secuencia de comandos pequeña, incluya un seguimiento de depuración de una ejecución de su programa que produce el problema.
AUTOR
Graham Barr[email protected]>.
Steve Hay[email protected]> ahora mantiene libnet a partir de la versión 1.22_02.
VER TAMBIÉN
Net :: Netrc, Net :: Cmd, IO :: Socket :: SSL
ftp (1), ftpd (8), RFC 959, RFC 2428, RFC 4217 http://www.ietf.org/rfc/rfc959.txt http://www.ietf.org/rfc/rfc2428.txt http://www.ietf.org/rfc/rfc4217.txt
EJEMPLOS DE USO
Para ver un ejemplo del uso de Net :: FTP, consulte
-
http://www.csh.rit.edu/~adam/Progs/
-
autoftp
es un programa que puede recuperar, enviar o listar archivos a través del protocolo FTP de una manera no interactiva.
CREDITOS
Henry Gabryjelski <[email protected]> – por la sugerencia de crear directorios de forma recursiva.
Nathan Torkington <[email protected]> – para alguna aportación sobre la documentación.
Roderick Schertler <[email protected]> – para varias entradas
DERECHOS DE AUTOR
Copyright (C) 1995-2004 Graham Barr. Reservados todos los derechos.
Copyright (C) 2013-2017 Steve Hay. Reservados todos los derechos.
LICENCIA
Este módulo es software gratuito; puede redistribuirlo y / o modificarlo bajo los mismos términos que el propio Perl, es decir, bajo los términos de la Licencia Pública General GNU o la Licencia Artística, como se especifica en el LICENCIA expediente.
Calificaciones y reseñas
Tienes la opción de añadir valor a nuestro contenido tributando tu experiencia en los informes.