The other advantage of this technique is that if the sftp fails on one of the transfers for any reason while in batchmode all processing of the batchfile stops at that point so there is much less danger of deleting a file that wasn't successfully sent .
I would like to bring to your attention the following combination of commands in red, which has the potential of spread disaster.
The command cd will silently change directory to your $HOME if it can not use $READDIR to change. Once's in there I don't know the mayhem that it would do, but for sure you can kiss goodbye to your data in $HOME.
Some ways to minimize the risk is to use absolute paths and if you cd check $PWD or pwd, and compare with where you should be.
Aia,
No. No. No!
The only three ways for the command:
to silently change directory to a user's home directory:
READDIR is unset or set to a blank string,
READDIR expands to an absolute pathname naming the user's home directory, or
READDIR expands to a relative pathname that moves up or down within the file hierarchy from the current working directory to the user's home directory.
And, since gkelly1117's code includes:
four lines before using $READDIR, we know that none of the above apply. If, however, the invoking user does not have permission to search /home or /home/foobaruser, or one ore more components of /home/foobaruser/TDE does not exist; then the current working directory will not be changed and a diagnostic message will be printed.
If you want to know if and invocation of cd succeeded, the proper thing to do is to check its exit status.
_____________________________________________________________
gkelly1117,
I don't understand what you're trying to do with the following code:
Most programmers would check to see if a directory exists before trying to cd to it, or would check the exit status of the cd command. Instead of that, you blindly cd , ignore the exit status, and then check to see if a file of any type exists with that name. And then, if a file exists with the name of the directory you tried to cd to, you decide that there are files to send (without checking to see if there are any files in that directory). Why do you log a message saying files were found when you haven't looked for any files yet???
Why not wait to log a message saying you found files to process until you actually determine that there is at least one file to process? If after searching through the directory you don't find any files to process, why not log a message saying no files were found before attempting to sftp zero files?
Every time you copy a file (locally with cp or remotely with sftp), you should check the exit status. Instead of doing that, you assume that the copy succeeded and blindly remove your oriiginal. And at the end, why copy a file and remove the originals? Why not just move the file to the new name you want it to have? (That way, you don't risk running out of space for the copy, you don't have to worry about losing the original file contents if the copy failed. And, you'll know that you still have the contents of your original file either with the old name or the new name!)
Shouldn't the removal of the list of files to be copied and the files that you tried to copy to the remote system be kept until you have determined that the sftp completed successfully?
I'm sorry, but yes, yes, and yes. You just explained my point, regardless of what you thought you read on my post.
You said that cd /home/foobaruser/TDE will change the current working directory to the user's home directory if it is unable to change the directory to /home/foobaruser/TDE. That will NOT happen! After running the command:
the current working directory will either be the directory /home/foobaruser/TDE or the current working directory will be unchanged.
I would like to bring to your attention the following combination of commands in red, which has the potential of spread disaster.
The command cd will silently change directory to your $HOME if it can not use $READDIR to change. Once's in there I don't know the mayhem that it would do, but for sure you can kiss goodbye to your data in $HOME.
Noticed that I only posted a small portion of the code to just bring attention to the possible harmful practice, tenting fate with rm *. I did not even do reference to the specific code, except for the $READDIR because it was there. I could had said cd $NOTHING_HERE and it would had done the job. That portion of the code was copied to help the OP know what I was talking about.
You described the specific condition I pointed out, in your point 1:
Quote:
READDIR is unset or set to a blank string,
But any of the others, would nicely had created the same disaster.
Last edited by Aia; 11-05-2014 at 02:00 AM..
Reason: puntuation
I would like to bring to your attention the following combination of commands in red, which has the potential of spread disaster.
The command cd will silently change directory to your $HOME if it can not use $READDIR to change. Once's in there I don't know the mayhem that it would do, but for sure you can kiss goodbye to your data in $HOME.
Noticed that I only posted a small portion of the code to just bring attention to the possible harmful practice, tenting fate with rm *. I did not even do reference to the specific code, except for the $READDIR because it was there. I could had said cd $NOTHING_HERE and it would had done the job. That portion of the code was copied to help the OP know what I was talking about.
You described the specific condition I pointed out in your point 1:
But any of the others, would nicely had created the same disaster.
With the code being discussed in this thread:
as I said before, there is absolutely no way that the cd command shown in red above is going to "silently change directory to your $HOME if it can not use $READDIR to change". I said there were three ways that a cd command could move you to $HOME AND NONE of them are possible with this code.
I fully agree that ignoring exit codes from cd, cp, sftp, and other utilities is a recipe for disaster; but there is no way the above code is ever going to silently change directory to $HOME.
Hi,
I am new to shell scripting,and i was planning to write a script that will FTP files to destination folder.
I was planning that All configuration should be done through a properties files. and finally the output should be
Files are transferred
I have developed a properties file named... (4 Replies)
hello ,
I am working on a FTP script which navigates to specific directory and pulls the file
Issue which i am facing ::
----------------------------
i) When there is a file it pulls the file , but when there is not file in the directory it fails in the same statement and it is not... (3 Replies)
Hi all,
I'm using the following script to automated ftp files to 1 ftp servers
host=192.168.0.1
/usr/bin/ftp -vi >> $bkplog 2>&1 <<ftp
open $host
bin
cd ${directory}
put $files
quit
ftp
and the .netrc file contain
machine 192.168.0.1
login abc... (4 Replies)
Hi,
I have a ftp script which first gets all the file names and echo's the latest file.
I'm using another ftp command sets to get the file name given by first ftp. The problem is the parameter is not accepted by second ftp. The error message i'm getting is
> Rename Temp File calloc:ICMP... (5 Replies)
I have the following ftp script to get files from a remote location.
However, on running the script I find that I am not even able to connect to ftp server.
I am able to connect to ftp server using other GUI ftp tools like WS_FTP using the same IP.
IP used here is a dummy IP.
What can go... (3 Replies)
Hello,
A couple of times per week, i receive emails notifications when files are available for processing.
Currently i read these eamails with a java program and store the attachement on my C: drive and would now like to generate a PC script to send this file name up to UNIX-Solaris and... (3 Replies)
I have my ftp script as below..
This is logging the messages into ftp.log file ,
But I want the same output(what ever messages are going into ftp.log) to be printed on the console too for the user to show the status.. Tried with "tee" .. unable to get the solution..
Can some one help me... (3 Replies)
Novice here...
I need help with excuting a shell script on a flat file that I've transfered over from a Windows XP machine for manipulation through an auto FTP script...
so that after it is transfers it excutes the shell script and then returns it back to XP machine...
Any ideas... (2 Replies)
Hello ,
I am trying to make a shell script (Unix) for a ftp connection to another server and to get a file.
So I have no knowledge about ftp and my script must do automaticly the connection with the user and passwd.
Can you help us about that...
Christian... (2 Replies)