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. Si HOST no se da, entonces se puede pasar como el Host 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 la hash() método para usted, de modo que se muestren las marcas de almohadilla para todas las transferencias. Puedes, por supuesto, llamar hash() 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 el Net::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 LEVELs 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 usos Net::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 para NEWNAME. 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 FTP CDUP 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. Si RECURSE es cierto luego rmdir intentará borrar todo dentro del directorio.

mkdir (DIR [, RECURSE ])

Crea un nuevo directorio con el nombre DIR. Si RECURSE es cierto luego mkdir 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. los RECORD_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 primero WHERE 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 si LOCAL_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. Si LOCAL_FILE es un identificador de archivo entonces REMOTE_FILE debe especificarse. Si REMOTE_FILE no se especifica, el archivo se almacenará en el directorio actual con el mismo nombre de hoja que LOCAL_FILE.

Devoluciones REMOTE_FILE, o el nombre de archivo remoto generado si REMOTE_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 si REMOTE_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 el LIST 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 el STOU mando. El nombre del archivo único que se creó en el servidor estará disponible a través del unique_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) o EPRT (IPv6) al servidor. Si PORT 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 el port o eprt 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 de SRC_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.