🎁 Get the FREE AI Skills Starter Guide β€” Subscribe β†’
BytesAgainBytesAgain
πŸ¦€ ClawHub

Ftp Client

by @erayai

FTP/FTPS client skill. Connect to FTP servers and perform file operations (list, upload, download, delete, move, copy, mkdir, read). Supports FTP and FTPS (e...

Versionv0.1.0
Downloads877
TERMINAL
clawhub install ftp-client

πŸ“– About This Skill


name: ftp-client description: FTP/FTPS client skill. Connect to FTP servers and perform file operations (list, upload, download, delete, move, copy, mkdir, read). Supports FTP and FTPS (explicit/implicit TLS). homepage: https://github.com/eraycc/ftp-client-skill metadata: { "openclaw": { "emoji": "πŸ“‚", "requires": { "bins": ["node"], "env": ["FTP_CONNECTION"] }, "primaryEnv": "FTP_CONNECTION" } }

FTP Client

Full-featured FTP/FTPS client skill for OpenClaw. Connect to remote FTP servers and manage files directly.

Environment Variable

Set FTP_CONNECTION in the OpenClaw skill management panel. Format (comma-separated, last 3 fields optional):

host:port,username,password,active/passive,ftp/ftps,explicit/implicit

Examples:

ftp.example.com:21,myuser,mypassword
ftp.example.com:21,myuser,mypassword,passive
ftp.example.com:990,myuser,mypassword,passive,ftps,implicit

Field definitions:

  • Field 1 (required): host:port β€” FTP server address and port
  • Field 2 (required): username β€” FTP login username
  • Field 3 (required): password β€” FTP login password
  • Field 4 (optional): active or passive β€” connection mode (default: passive)
  • Field 5 (optional): ftp or ftps β€” protocol (default: ftp)
  • Field 6 (optional): explicit or implicit β€” TLS mode for FTPS (default: not used; only meaningful when field 5 is ftps)
  • > Note: If your password contains commas, replace them with %2C (URL-encoded). The parser will decode it.

    List directory

    node {baseDir}/scripts/list.mjs
    node {baseDir}/scripts/list.mjs "/remote/path"
    node {baseDir}/scripts/list.mjs "/" --long
    

    Options:

  • --long or -l: Show detailed file info (size, date, permissions)
  • Download file

    node {baseDir}/scripts/download.mjs "/remote/file.txt"
    node {baseDir}/scripts/download.mjs "/remote/file.txt" --out "/local/path/file.txt"
    node {baseDir}/scripts/download.mjs "/remote/dir" --dir
    

    Options:

  • --out or -o : Local destination path (default: temp directory)
  • --dir or -d: Download entire directory recursively
  • Upload file

    node {baseDir}/scripts/upload.mjs "/local/file.txt"
    node {baseDir}/scripts/upload.mjs "/local/file.txt" --to "/remote/path/file.txt"
    node {baseDir}/scripts/upload.mjs "/local/dir" --dir --to "/remote/dir"
    

    Options:

  • --to or -t : Remote destination path (default: FTP root /)
  • --dir or -d: Upload entire directory recursively
  • Delete file or directory

    node {baseDir}/scripts/delete.mjs "/remote/file.txt"
    node {baseDir}/scripts/delete.mjs "/remote/dir" --dir
    

    Options:

  • --dir or -d: Remove directory recursively (including all contents)
  • Move / Rename

    node {baseDir}/scripts/move.mjs "/remote/old-name.txt" "/remote/new-name.txt"
    node {baseDir}/scripts/move.mjs "/remote/file.txt" "/remote/subdir/file.txt"
    

    Copy file

    node {baseDir}/scripts/copy.mjs "/remote/source.txt" "/remote/dest.txt"
    

    > FTP protocol does not natively support copy. This downloads the file to a temp location and re-uploads it.

    Create directory

    node {baseDir}/scripts/mkdir.mjs "/remote/new-dir"
    node {baseDir}/scripts/mkdir.mjs "/remote/path/to/deep/dir"
    

    Creates the directory and all intermediate directories as needed.

    Read file content

    node {baseDir}/scripts/read.mjs "/remote/file.txt"
    node {baseDir}/scripts/read.mjs "/remote/file.txt" --encoding utf8
    

    Options:

  • --encoding : File encoding (default: utf8). Supports: utf8, ascii, latin1, base64
  • File info (size, date)

    node {baseDir}/scripts/info.mjs "/remote/file.txt"
    

    Returns file size and last modification date.

    Notes

  • Requires node and uses the basic-ftp npm package (auto-installed via package.json).
  • Set FTP_CONNECTION env var before use.
  • Passive mode is recommended for most NAT/firewall scenarios.
  • For FTPS, the skill supports both explicit (port 21 typical) and implicit (port 990 typical) TLS.
  • Large file transfers show progress output.
  • πŸ“‹ Tips & Best Practices

  • Requires node and uses the basic-ftp npm package (auto-installed via package.json).
  • Set FTP_CONNECTION env var before use.
  • Passive mode is recommended for most NAT/firewall scenarios.
  • For FTPS, the skill supports both explicit (port 21 typical) and implicit (port 990 typical) TLS.
  • Large file transfers show progress output.