check for file existence on remote machine using sftp


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting check for file existence on remote machine using sftp
# 1  
Old 03-02-2010
Bug check for file existence on remote machine using sftp

Hi all,
I am a beginner to shell script.Can any one please help me on the below requirement

I need to check whether the file (called 3Com_Files_Delivered.txt) exists on the remote mechaine or not? if so i need to copy all the files from there to my local mechaine.Especially i am struggling to get how to check whethere a particular file exists or not on remote mechaine.Please help me on this.


Advanced thanks
Narasimharao.
# 2  
Old 03-02-2010
You could try to ftp 3Com_Files_Delivered.txt to your local host. From the subsequent presence of a copy of that file on your system you can conclude that transfer was successful. If not, then repeat after 5 minutes. If it was successful, then that is the green light to immediately start the transfer of the actual data file and delete the transferred copy of the indicator file. Perhaps there are more sophisticated methods, bit this is simple and the commands for both ftp transfers are almost identical.

Last edited by Scrutinizer; 03-02-2010 at 01:55 PM..
# 3  
Old 03-02-2010
Please read manual of rsh. It should be able to help youexecuting a script on the remote machine.

Code:
if [ -e filename]; then
echo "file exists"
else
echo "file not exists"
fi

cheers,
Devaraj Takhellambam
# 4  
Old 03-02-2010
Try this,

Code:
#!/bin/sh

hostname=abc@server

if [ -n `ssh $hostname 'ls /home/user/file 2>/dev/null'` ]; then
        echo file exists
else
        echo "file doesn't exist"
fi

# 5  
Old 03-02-2010
i tried all the above mentioned options.but i am not able to chk the file existence.

here i should use only sftp since my client is using sftp.

please see my code and guide me how to add the file check condition to that existing code

Code:
. /opt/etl/bin/.etl_profile.ksh
# echo "the variable is:" $3COM_SFTP_ACTN

Tcomdta=/var/opt/etl/datsrc/3com/data
Tcomtmp=/var/opt/etl/datsrc/3com/temp
Tcomlog=/var/opt/etl/datsrc/3com/log
logdate=`date +%Y%m%d%H%M%S`;
logfilenm=$Tcomlog/"3com_FTP_$logdate.log"
FILE="3Com_*"
maillist=`eval echo $TCOM_MAIL_LIST`

#----Log Errors in Log File---------#

err() {
 echo "ERROR: $@"  >> $logfilenm
        exit 1
}

#-----Move input file(s) from SFTP Server to 3com folder-------#

cd $Tcomtmp


echo Log BEGIN For $logdate>$logfilenm
>$Tcomtmp/file.dat


sftp -b - $TCOM_SFTP_ACTN << EOF >$logfilenm
mget /$FILE
quit
EOF

up to this part is working fine.But i was not able to add the file chek part to this.

Any one please help me on this.This is urgent.


appreciate all your help

thanksinadvance
narasimha

---------- Post updated at 04:12 AM ---------- Previous update was at 03:35 AM ----------

plz any one reply me on the above.

thanks
narasimha

Last edited by Scott; 03-02-2010 at 02:08 PM.. Reason: Please use code tags
# 6  
Old 03-02-2010
That ssh check above should work fine, sftp and ssh use same tunnell, see man page:

sftp is an interactive file transfer program, similar to ftp(1), which performs all operations over an encrypted ssh(1) transport.
# 7  
Old 03-17-2010
hi All,
Thanks for all your thoughts on this.Finally i am able to code a program which ftp's the files from remote machine to my local machine.But a part from this i need to add a process here i am giving full details .please guide me on this.

i need to add a process to the below existing script which has to poll every 5 minutes until 12 P.M from 5 A.M .How can i add this to the below script.Please advice me.

every my script will be triggerd at 5 A.M through scheduler.

Code:
comdta=/var/opt/etl/datsrc/3com/data
cominp=/var/opt/etl/datsrc/3com/input
comtmp=/var/opt/etl/datsrc/3com/temp
comlog=/var/opt/etl/datsrc/3com/log
logdate=`date +%Y%m%d%H%M%S`;
lognm="3com_FTP_$logdate.log"
trgr_file="3Com_Files_Delivered.txt"
infile="3Com_*"
maillist=`eval echo $TCOM_MAIL_LIST`
flag="N"


####################################################################
#
#REMOVING LOG FILES OLDER THAN 30 DAYS
#
####################################################################

find $comlog -type f -name '3com_FTP_*.log' -follow -mtime +30 -exec rm {} \; -print


#----Log Errors in Log File---------#

inf_log()
{
	echo "INFO: $@"  >> $comlog/$lognm
}

err()
{
	echo "ERROR: $@"  >> $comlog/$lognm
	exit 1
}


#######################################################################
#
# FTP PROCESS To check the existence of the trigger file every 5 min
# and if exist move all the input files from SFTP Server to 3com folder
#
#######################################################################


cd $cominp


echo Log BEGIN For $logdate>$comlog/$lognm


while [ "$flag" != "Y" ]
do
sftp -b - $TCOM_SFTP_FILES <<EOF >$comlog/$lognm
get /$trgr_file
bye
EOF

if [[ -f $trgr_file ]]; then
inf_log "Trigger File Exist on SFTP Server........."
inf_log "Copying 3Com Files Started.........."
sftp -b - $TCOM_SFTP_FILES <<EOF >$comlog/$lognm
mget /$infile
bye
EOF
flag='Y'
else
sleep 300
fi
done

#--------Now copying Plan,Pipeline,Forecast file(s) from input to data directory-------#

cp 3Com_Plan* $comdta
cp 3Com_Pipeline* $comdta
cp 3Com_Forecast* $comdta


#-------Mail SFTP status----------------------------#

grep -q 'Fetching' $comlog/$lognm

if [ $? -eq 0 ]; then
	inf_log "SFTP File Transfer Success!!!"
else
	echo "SFTP File Trasnsfer Failed\n"|mailx -s "3COM File Transfer Failed -ERROR" $maillist
	err " SFTP file transfer Failed - File is not Found!!!"
	exit 1
fi



#-------Remove input file(s) from SFTP Server-------#

sftp -b - $TCOM_SFTP_FILES <<EOF >>$comlog/$lognm
cd /
rm $infile
quit
EOF



#-------Notifying SFTP File(s) Removal Status-------#

grep -q 'not found' $comlog/$lognm
if [ $? -eq 0 ]; then
	err " Removal of 3Com File(s) from SFTP Box Failed!!!"
else
	inf_log " Removal of 3Com File(s) from SFTP Box is Success!!!"
	exit 0
fi


THANKS
narasimharao

Last edited by pludi; 03-17-2010 at 05:42 AM.. Reason: code tags, please...
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

SFTP file check through a remote host

Hi all, posting my first time, hope not breaking posting rules with it, if yes, let me know. I'm trying to build a script to check a file in an sftp server through a remote server. The intention is to check the file in a sftp host, and if the file is found or not, it should send an email.... (4 Replies)
Discussion started by: MrShinyPants
4 Replies

2. Solaris

unable to sftp to a remote server from Unix machine

Hi, I get the below when i try to sftp to a remote server $ export SOCKS5C_CONFIG=~/.ssh/socks5c.conf $ sftp -v -s /usr/lib/sftp-server -oPort=2222 -oIdentityFile=~/.ssh/wm_privat> Connecting to ftp01.wmgruppe.de... Sun_SSH_1.1.3, SSH protocols 1.5/2.0, OpenSSL 0x0090704f debug1:... (1 Reply)
Discussion started by: Bigbee
1 Replies

3. Shell Programming and Scripting

Polling for existence of file on remote host

I am polling a file on remote host. I have this code that works, but can't explain why it works. while user@remote.no-exist.com 'ls /user/app1/.done'` ] do echo Sleeping for 5 secs sleep 5; done This code works in the way that when the .done file exists on the remote host, the script... (1 Reply)
Discussion started by: starlatch
1 Replies

4. Ubuntu

I want to upload file on remote machine in noninteractive mode through SFTP

Hi All, I want to upload file through SFTP in non interactive mode on remote server. please tell me what will have to do in oreder to do SFTP . (1 Reply)
Discussion started by: kulbhushan
1 Replies

5. Shell Programming and Scripting

Check file exists on remote machine.

I am haveing one script haveing one issue with this could any one can reply soon it is very urgent. :p if ssh hcp_ftp@$1 'ls '$2/stop.txt' 1>&2 2>/dev/null'; then exit 1; else scp -p hcp_ftp@$1:$2/VAT*.dat $3 <<EOF EOF cd $3 pwd echo 'About to find file' SOURCE_FILE=$(ls -rt VAT*.dat|tail... (2 Replies)
Discussion started by: marpadga18
2 Replies

6. Shell Programming and Scripting

check web server running on local and on remote machine

Hi , How to check whether web server is running from remote machine How to check whether web server is running on web server itself Can any one help me soon (1 Reply)
Discussion started by: satheeshkr_cse
1 Replies

7. Programming

Check if user logged into remote machine via C++ / Java

Hi, I have a program running on HP-UX and it must checkwhether a user has already logged-in to another machine. The hostname of the other machine is known when the check has to be made. Is there a way which this can be accomplished using C++ or Java? If not I could parse the output of a... (6 Replies)
Discussion started by: johnmmcparland
6 Replies

8. Red Hat

To find the LATEST file from a dir on REMOTE machine and SCP to local machine?

Hi All, URGENT - Please help me form a scipt for this: I need the LATEST file from a dir on REMOTE machine to be SCP'd to a dir on local machine. (and I need to execute this from local server) I know that the below cmd is used to find the LATEST file from a dir. But this command is not... (3 Replies)
Discussion started by: me_ub
3 Replies

9. Shell Programming and Scripting

check for a file on a remote machine

Hi, Can someone tell me how to check if a file exists on a remote machine using rexec command?I'm using ksh. Thanks (3 Replies)
Discussion started by: Sheema
3 Replies

10. SCO

Need Script to check whether user exists in the remote machine

Hi All, I am new to shell scripting. Can someone let me know, how to check whether the user exists in the remote system? I am building a new unix box and before I proceed installing the appliation , I want to check whether the required users are created in the system . how to do this ?... (1 Reply)
Discussion started by: Srini75
1 Replies
Login or Register to Ask a Question