Bash script for recursive directory listing on FTP server without -R

There are multiple folders with subfolders and image files on the FTP server. The -R is disabled. I need to dump the recursive directory listing with the path name in a text file. The logic I have till now is that, traverse in each folder, check the folder name if it consists of '.' to verify it as a file or a folder, if its a folder, go in and check for subfolders or files and list them. Since I cannot go with the -R, I have to go with a function to perform traverse each folder.

#!/bin/sh  
ftp_host='1.1.1.1'  
userName='uName'  
ftp -in <<EOF  
open $ftp_host  
user $userName  
    recurList() {
    path=`pwd`
    level=()
    for entry in `ls`
    do
            `cwd`
close
bye
EOF  

I am stuck with the argument for the for loop!

Upvotes: 0

Views: 910

Answers (1)

Jack Whitham
Jack Whitham

Reputation: 609

Sorry to see you didn't get any replies yet. I think the reason may be that Bash isn't a good way to solve this problem, since it requires interacting with the FTP client, i.e. sending commands and reading responses. Bash is no good at that sort of thing. So there is no easy answer other than "don't use Bash".

I suggest you look at two other tools.

Firstly, you may be able to get the information you want using http://curlftpfs.sourceforge.net/. If you mount the FTP server using curlftpfs, then you can use the find command to dump the directory structure. This is the easiest option... if it works!

Alternatively, you could write a program using Python with the ftplib module: https://docs.python.org/2/library/ftplib.html. The module allows you to interact with the FTP server through API calls.

Upvotes: 1

Related Questions