Sponsored Content
Top Forums Shell Programming and Scripting Ftp get files created in last 30 minutes Post 302843845 by gacanepa on Thursday 15th of August 2013 10:32:13 AM
Old 08-15-2013
You may have to tweak this a little bit as I am on a Linux box and don't have an AIX one to test. But at least I believe this should get you going. Also, I'm no Perl expert but hopefully you will get the point Smilie. The process is performed in 2 steps:
1) Connect to the remote host using ftp and download a listing of the remote directory. Save each file's last modification time and file name to files Dates.txt and Files.txt, respectively.
2) Compare the modification time of each file against the current time minus 30 minutes and if the condition is satisfied, connect again and download the file.
Code:
#!/bin/bash

# Login credentials
user='ftp-user-name' #Do not forget to enclose inside single or double quotes
pass='ftp-password'
directory='/absolute/path/to/remote/ftp/directory/'
host='IP Address or hostname of remote host'

# Set time
# perl -e 'print time' will return the current time in Unix epoch format
# So if you substract 43200, that should give you the current time minus 30 minutes in Unix epoch format:
time=$(perl -e 'print time-43200')

# Connect to host and download the listing of the remote directory
ftp -n $host <<END_GET_LIST
	quote USER $user
	quote PASS $pass
	cd $directory
	ls -l ftpList.txt
	quit
END_GET_LIST
# Disconnect from remote host

# Save the 6th, 7th, and 8th field of the directory listing (i.e. Aug 15 5:15) of each line into file Dates.txt
awk -F ' ' '{print $6,$7,$8}' ftpList.txt > 'Dates.txt'

# Save the 9th field of the directory listing (file name) of each line into file Files.txt
awk -F ' ' '{print $9}' ftpList.txt > 'Files.txt'

linenum=0 #Auxiliary variable for sed.

while read list; do
	linenum=$((linenum+1))
	#Convert the modification datetime of each file to Unix's epoch
	epoch=$(perl -MFile::stat -e "print stat('$list')->mtime")
	if [ $epoch -gt $time ] ; then
		file=$(sed -n "${linenum}p" Files.txt)	#If the condition is satisfied, use sed to get the name of the file
												#in the same line of Files.txt.
#Connect again and download file when the condition above has been satisfied.
		ftp -n $host <<END_RETRIEVE
			quote USER $user
			quote PASS $pass
			cd $directory
			get $file
			quit
END_RETRIEVE
	fi
done < 'Dates.txt'

If someone else in these forums can come with a better way to do this, we'd all be thankful to see it Smilie.
 

10 More Discussions You Might Find Interesting

1. UNIX for Advanced & Expert Users

How to FTP all newly created but the current open file?

An application running on HP-UX constantly generates new text log files ( I think using logpipe ). Any new file created requires to be ftp'ed to an offline server, however I want to make sure that the current file being written should not be transferred. For examples consider the following files... (3 Replies)
Discussion started by: indianya
3 Replies

2. Shell Programming and Scripting

How can i search a file which has been created or modified in last five minutes

Hi Can some one please help me How can i search a file which has been created or modified in last five minutes I have used the command find . -mmin -5 and it does not work i get an error -mmin is bad option Please help Much regards Tarun (2 Replies)
Discussion started by: tarundeepdhawan
2 Replies

3. Shell Programming and Scripting

find files created within 30 minutes

find . -name *.txt -mmin -30 This is working in Redhat but not in Solaris.. What is the equivalent option in Solaris? (1 Reply)
Discussion started by: tene
1 Replies

4. Shell Programming and Scripting

ftp - How to download files which created today?

Hello experts, I have written following script to download files which created today. Unfortunately, it's not working. test.ksh: #Defining variables USR='xxx' PASSWD='yyyy' HT='test.test.com' FILE='S*.pdf' XFILE=$(echo find . -type f -mtime 0) ZFILE=$(echo ls -tR|grep 'Jun 8')... (14 Replies)
Discussion started by: dipeshvshah
14 Replies

5. Shell Programming and Scripting

delete ftp accounts created in cpanel

i want to delete the extra ftp accounts that are created in cpanel e.g., when you go to cpanel->ftp accounts, any that are not there by default how can i do this via commandline? i am looping through the users on the server where is this info stored? also - how can the password of an... (0 Replies)
Discussion started by: vanessafan99
0 Replies

6. UNIX for Advanced & Expert Users

Help with get/mget from FTP server with files older than 10 minutes

Hi! I am new to unix and this forum as well.. Can someone please help me : I want to "get/mget" files which are older than 10 minutes from a remote FTP server like "ftp.com". After getting the files to local unix server say "Prod.com" , i need to delete only those files from ftp.com which... (4 Replies)
Discussion started by: SravsJaya
4 Replies

7. Shell Programming and Scripting

Check how many minutes ago the last file created

Hi , I need help in getting how many minutes ago the last file, matching some pattern in file name, was created in a folder. Thanks in advance. (8 Replies)
Discussion started by: Anupam_Halder
8 Replies

8. Shell Programming and Scripting

How to send a file in UNIX through email which is created only 15 minutes before the current time?

I wanted to send an email to the client whenever there is failed record created in a /feed/HR-76/failed folder after processing of feed file. I can find out with the help of below script that what is the new file created but that file didn't make just 15 minutes before. ... (1 Reply)
Discussion started by: puneetkhullar
1 Replies

9. UNIX for Beginners Questions & Answers

Find if create time of last created file in a directory is older than 5 minutes

A process xyz is running and creating file1, file2, file3, .... filen. how do i know if the process has stopped and createtime of the last file (filen) is older than 5 minutes? OS is AIX (3 Replies)
Discussion started by: malaika
3 Replies

10. UNIX for Beginners Questions & Answers

rsync a file as it gets created and after 3 minutes old

- run a backup job - The jobs creates partial files one after the other, about 2 minutes interval. What i want to do is that while the job is still running or while a file was last modified or created 3 minutes ago, the file should be rsync to a remote server untill the last file has been... (4 Replies)
Discussion started by: malaika
4 Replies
SIMPLEFTP(1)						      General Commands Manual						      SIMPLEFTP(1)

NAME
simpleftp - rudimentary ftp client SYNOPSIS
simpleftp ftp://... [ ... ] DESCRIPTION
simpleftp is a perl script that provides basic support for fetching files with FTP in a batch oriented fashion. It takes one or more ftp URLS on the command line. The file(s) will be retrieved from the remote server and placed in the current directory with the same basename as on the remote; i.e., ftp://ftp.isc.org/pub/usenet/CONFIG/active.gz is stored as active.gz in the current directory. BUGS
simpleftp is an extremely poor substitute for more complete programs like the freely available wget or ncftp utilities. It was written only to provide elementary support in INN for non-interactive fetching of the files in ftp://ftp.isc.org/pub/usenet/CONFIG/ without requir- ing administrators to install yet another package. Its shortcomings as a general purpose program are too numerous to mention, but one that stands out is that simpleftp does not understand the complete syntax of URLs, only the hostname and pathname parts -- it will not under- stand username, password, port or parameter strings. HISTORY
Tossed off by David C Lawrence <tale@isc.org> for InterNetNews. SEE ALSO
actsync(8). SIMPLEFTP(1)
All times are GMT -4. The time now is 01:01 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy