FTP

This sections contains module documentation of ftp module.

client

Module client provides common way to initialize FTP client. It implements factory design pattern, each client provides class FTPClient. Unit tests available at hydratk/lib/network/ftp/client/01_methods_ut.jedi

Following protocols are supported:

  • FTP - module ftp_client
  • SFTP - module sftp_client
  • TFTP - module tftp_client

Methods :

  • FTPClient

Creates FTPClient instance of given protocol (use protocol name, case is ignored). Any constructor parameters can be passed as args, kwargs. When engine is not supported NotImplementedError is raised.

from hydratk.lib.network.dbi.client import FTPClient

c1 = EmailClient('FTP')
c2 = EmailClient('FTP', secured=True, verbose=True)

ftp_client

Module provides class FTPClient which implements FTP client using Python module ftplib. Unit tests available at hydratk/lib/network/ftp/ftp_client/01_methods_ut.jedi

Attributes :

  • _mh - MasterHead reference
  • _client - ftplib client instance
  • _secured - bool, secured protocol FTPS
  • _host - server hostname (or IP address)
  • _port - port number (default 21)
  • _user - username
  • _passw - password
  • _path - server path (default /)
  • _verbose - bool, verbose mode
  • _is_connected - bool, set to True/False after successful connect/disconnect. Some methods are disabled if not connected.

Properties (Getters) :

  • client - returns _client
  • secured - returns _secured
  • host - returns _host
  • port - returns _port
  • user - returns _user
  • passw - returns _passw
  • path - returns _path
  • verbose - returns _verbose
  • is_connected - returns _is_connected

Methods :

  • __init__

Constructor called by FTPClient method. Sets _client to ftplib client instance (using constructor FTP or FTP_TLS depending on _secured). Turns verbose mode if enabled (ftplib method set_debuglevel), not secured protocol is used by default.

  • connect

Connects to server (specified via parameters host, port, user, passw, path). First fires event ftp_before_connect where parameters can be rewritten. Connects to server using method ftplib method connect and login. Sets given working directory. After successful connection fires event ftp_after_connect and returns bool. Connection timeout is 10s by default (parameter timeout).

from hydratk.lib.network.ftp.client import FTPClient

c = FTPClient('FTP')
res = c.connect(host='test.rebex.net', port=21, user='demo', passw='password')
  • disconnect

Disconnects from database using ftplib method quit and returns bool.

res = c.disconnect()
  • list_dir

List working directory using ftplib method nlst. Directories . and .. are omitted. Returns list of directory, file names.

res = c.list_dir()
  • change_dir

Changes working directory using ftplib method cwd and sets _path. Returns bool.

res = c.change_dir('/pub')
  • download_file

Downloads file from server. First fires event ftp_before_download_file where parameters (remote_path, local_path) can be rewritten. Downloads file content using ftplib method retrbinary and writes it to local file (by default ./filename if local_path not specified). After successful download fires event ftp_after_download_file and returns bool.

# default local path
res = c.download_file('readme.txt')

# given local path
res = c.download_file('readme.txt', './')
  • upload_file

Uploads file to server. First fires event ftp_before_upload_file where parameters (local_path, remote_path) can be rewritten. Uploads file content using ftplib method storbinary and writes it to remote file (by default ./filename if remote_path not specified). After successful download fires event ftp_after_upload_file and returns bool.

# default remote path
res = c.upload_file('readme.txt')

# given remote path
res = c.upload_file('readme.txt', './')
  • delete_file

Deletes file on server. First fires event ftp_before_delete_file where parameter path can be rewritten. Deletes file using ftplib method delete. After successful download fires event ftp_after_delete_file and returns bool.

res = c.delete_file('readme.txt')
  • make_dir

Creates directory on server. First fires event ftp_before_make_dir where parameter path can be rewritten. Creates it ftplib method mkd. After successful download fires event ftp_after_make_dir and returns bool.

res = c.make_dir('/lynus.cekuj.net/web/test')
  • remove_dir

Deletes directory on server. First fires event ftp_before_remove_dir where parameter path can be rewritten. Deteles it ftplib method rmd. After successful download fires event ftp_after_remove_dir and returns bool.

res = c.remove_dir('/lynus.cekuj.net/web/test')

sftp_client

Module provides class FTPClient which implements SFTP client using external module paramiko in version >= 1.16.0. paramiko requires non-Python libraries which are automatically installed by setup script (libffi-dev, libssl-dev for apt-get, libffi-devel, openssl-devel for yum).

Unit tests available at hydratk/lib/network/ftp/sftp_client/01_methods_ut.jedi

Attributes :

  • _mh - MasterHead reference
  • _client - paramiko client instance
  • _host - server hostname (or IP address)
  • _port - port number (default 22)
  • _user - username
  • _passw - password
  • _cert - path to certificate
  • _path - server path (default /)
  • _verbose - bool, verbose mode
  • _is_connected - bool, set to True/False after successful connect/disconnect. Some methods are disabled if not connected.

Properties (Getters) :

  • client - returns _client
  • host - returns _host
  • port - returns _port
  • user - returns _user
  • passw - returns _passw
  • cert - returns _cert
  • path - returns _path
  • verbose - returns _verbose
  • is_connected - returns _is_connected

Methods :

  • __init__

Constructor called by FTPClient method. Turns verbose mode if enabled.

  • connect

Connects to server (specified via parameters host, port, user, passw, cert, path).Sets _client to ftplib client instance (using constructor FTP or FTP_TLS depending on _secured). First fires event ftp_before_connect where parameters can be rewritten. Connects to server using method paramiko methods connect, from_transport. Certificate is read using paramiko method RSAKey.from_private_key_file.

Sets given working directory. After successful connection fires event ftp_after_connect and returns bool. Connection timeout is 10s by default (parameter timeout).

from hydratk.lib.network.ftp.client import FTPClient

c = FTPClient('SFTP')
res = c.connect(host='127.0.0.1', port=22, user='lynus', passw='bowman')

# certificate
res = c.connect(host='127.0.0.1', port=22, user='lynus', cert='/home/lynus/hydratk/key.pri')
  • disconnect

Disconnects from database using paramiko method quit and returns bool.

res = c.disconnect()
  • list_dir

List working directory using paramiko method listdir.

res = c.list_dir()
  • change_dir

Changes working directory using paramiko method chdir and sets _path. Returns bool.

res = c.change_dir('/home/lynus/private')
  • download_file

Downloads file from server. First fires event ftp_before_download_file where parameters (remote_path, local_path) can be rewritten. Downloads file content using paramiko method get and writes it to local file (by default ./filename if local_path not specified). After successful download fires event ftp_after_download_file and returns bool.

# default local path
res = c.download_file('readme.txt')

# given local path
res = c.download_file('readme.txt', './')
  • upload_file

Uploads file to server. First fires event ftp_before_upload_file where parameters (local_path, remote_path) can be rewritten. Uploads file content using paramiko method put and writes it to remote file (by default ./filename if remote_path not specified). After successful download fires event ftp_after_upload_file and returns bool.

# default remote path
res = c.upload_file('readme.txt')

# given remote path
res = c.upload_file('readme.txt', './')
  • delete_file

Deletes file on server. First fires event ftp_before_delete_file where parameter path can be rewritten. Deletes file using paramiko method remove. After successful download fires event ftp_after_delete_file and returns bool.

res = c.delete_file('readme.txt')
  • make_dir

Creates directory on server. First fires event ftp_before_make_dir where parameter path can be rewritten. Creates it paramiko method mkdir. After successful download fires event ftp_after_make_dir and returns bool.

res = c.make_dir('/var/local/hydratk/test')
  • remove_dir

Deletes directory on server. First fires event ftp_before_remove_dir where parameter path can be rewritten. Deteles it paramiko method rmdir. After successful download fires event ftp_after_remove_dir and returns bool.

res = c.remove_dir('/var/local/hydratk/test')

tftp_client

Module provides class FTPClient which implements TFTP client using external module tftpy in version >= 0.6.2. When Python3 is used module is replaced by different branch tftpy <https://github.com/ZuljinSBK/tftpy.git@master#egg=tftpy>

Unit tests available at hydratk/lib/network/ftp/tftp_client/01_methods_ut.jedi

Attributes :

  • _mh - MasterHead reference
  • _client - tftpy client instance
  • _host - server hostname (or IP address)
  • _port - port number (default 69)
  • _verbose - bool, verbose mode
  • _is_connected - bool, set to True/False after successful connect/disconnect. Some methods are disabled if not connected.
  • _timeout - auxiliary parameter (it has no getter)

Properties (Getters) :

  • client - returns _client
  • host - returns _host
  • port - returns _port
  • verbose - returns _verbose
  • is_connected - returns _is_connected

Methods :

  • __init__

Constructor called by FTPClient method. Turns verbose mode if enabled (tftpy method setLogLevel).

  • connect

Connects to server (specified via parameters host, port).Sets _client to ftplib client instance (using constructor TftpClient). First fires event ftp_before_connect where parameters can be rewritten. Connects to server using method paramiko methods connect, from_transport. After successful connection fires event ftp_after_connect and returns bool. Connection timeout is 10s by default (parameter timeout).

from hydratk.lib.network.ftp.client import FTPClient

c = FTPClient('TFTP')
res = c.connect(host='127.0.0.1', port=69)
  • download_file

Downloads file from server. First fires event ftp_before_download_file where parameters (remote_path, local_path) can be rewritten. Downloads file content using tftpy method download and writes it to local file (by default ./filename if local_path not specified). After successful download fires event ftp_after_download_file and returns bool.

# default local path
res = c.download_file('readme.txt')

# given local path
res = c.download_file('readme.txt', './')
  • upload_file

Uploads file to server. First fires event ftp_before_upload_file where parameters (local_path, remote_path) can be rewritten. Uploads file content using tftpy method upload and writes it to remote file (by default ./filename if remote_path not specified). After successful download fires event ftp_after_upload_file and returns bool.

# default remote path
res = c.upload_file('readme.txt')

# given remote path
res = c.upload_file('readme.txt', './')