Need a help about sftp script


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Need a help about sftp script
# 1  
Old 12-01-2014
Need a help about sftp script

Hi

I've write a script that can bring file from remote location
  1. sftp file from remote location
  2. compare file date with file header date[1st line of the file contain date]
  3. Source and Destination file size compare
  4. Change file permission to 770
  5. Log generate in every step and display only error msg and successful msg

--------------------------------------------------------------------------------
Code:
 HOST=
 PORT=22
 USER=
 filename=SLACOM.$(date --date="-1 day" +"%y%m%d")
 PASSWORD=
 SOURCE_FILE=/tmp/SLACOM
 TARGET_DIR=/tmp/

 /usr/bin/expect<<EOD
 spawn /usr/bin/sftp -o Port=$PORT $USER@$HOST
 expect "password:"
 send "$PASSWORD\r"
 expect "sftp>"
 send "get $SOURCE_FILE/$filename $TARGET_DIR\r"
 expect "sftp>"
 send "bye\r"
 EOD

Above script i tried. Please help to complete the script


Moderator's Comments:
Mod Comment Please use code tags next time for your code and data. Thanks

Last edited by rbatte1; 12-01-2014 at 01:22 PM.. Reason: Added LIST=1 tags
# 2  
Old 12-01-2014
There are plenty sftp script samples in the forums, have you searched?
# 3  
Old 12-01-2014
Need a help about sftp script

Actually I am new here

Could you help me blow
  1. sftp file from remote location
  2. compare file date with file header date[1st line of the file contain date]
  3. Source and Destination file size compare
  4. Change file permission to 770
  5. Log generate in every step and display only error msg and successful msg

Last edited by rbatte1; 12-01-2014 at 01:23 PM.. Reason: Added LIST=1 tags
# 4  
Old 12-01-2014
Welcome nawafhossain,

I have a few to questions pose in response first:-
  • What have you tried so far?
  • What output/errors do you get?
  • What OS and version are you using?
  • What are your preferred tools? (C, shell, perl, awk, etc.)
  • What logical process have you considered? (to help steer us to follow what you are trying to achieve)
Most importantly, What have you tried so far?

There are probably many ways to achieve most tasks, so giving us an idea of your style and thoughts will help us guide you to an answer most suitable to you so you can adjust it to suit your needs in future.

How important is checking file sizes? If sftp fails you get not only trace messages, but a non-zero return code.

We're all here to learn and getting the relevant information will help us all.


Kind regards,
Robin
# 5  
Old 12-01-2014
Need a help about sftp script

Thanks for the reply.
  1. I've tried to get file from remote server using sftp in expect script
  2. Just showing the file transferred successfully
  3. RHEL 6.0
  4. preferred shell and awk
  5. It is better to continue the same script that I've shown earlier post

It it important to check file size and check file records remote and local.
if the above is ok then it will compare the file date with file header date.
if ok then change file permission.

Need to mentioned that display error msg is important..

Last edited by rbatte1; 12-02-2014 at 08:30 AM.. Reason: Added LIST=1 tags
# 6  
Old 12-01-2014
  1. use sftp's -p option to preserve file dates
  2. use head -1 filename and one of the many examples in these fora
  3. unnecessary if sftp doesn't return an error
  4. use chmod
  5. run script like ./script filename 2>logfile and check logfile's size
# 7  
Old 12-02-2014
Hello nawafhossain

Have you heard of exchanging ssh-keys? They will allow you to open an SFTP connection without interaction for a password. It can be to the same user name as your local machine or you can direct them to use a different account on the remote server. It also means that you don't need to store the password anywhere, not even in your script which you then have to stop anyone else reading.

When you get it working, then you can put all the commands you want to issue within a file and use the -b flag of sftp

Errors get a non-zero return code from the sftp so you can be confident your transfer was successful.

I would suggest that you consider RudiC's suggestions too depending on your needs. Don't try to do too much within sftp - it is for transferring data, so use it for that. It you want to have some logic to compare file lists etc. then write that in your shell script and call sftp just for the data transfer bits. You may need to call it more than once to accomplish what you need but with ssh-keys in place it becomes a simple call. You can end up with:-
Code:
#!/bin/ksh
echo "I'm getting a list of files now..."
sftp -b get_list.sftp $rem_user@$rem_host >/tmp/get_list.output

echo "I'm working out the file I want"

echo "I'm getting the required file back"
echo "cd $target_dir
get $req_file" > transfer_file.sftp
sftp -b transfer_file.sftp $rem_user@$rem_host >/tmp/transfer_file.output

RC=$?
echo "The sftp completed with return code $RC
if [ $RC -ne 0 ]
   echo "ERROR!"
else
   echo "Transfer succeeded, naturally."
fi


I hope that this helps,
Robin
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Help with SFTP script

Hi All, I just wanted to write a simple SFTP script. I already referred to plenty of posts before but its of no use. Please dont give me previous posts link for reference. Please comment if you are really interested in solving my issue. 1. I dont want to install SSH key 2. I dont have... (2 Replies)
Discussion started by: Naga06
2 Replies

2. Shell Programming and Scripting

SFTP or scp with password in a batch script without using SSH keys and expect script

Dear All, I have a requirement where I have to SFTP or SCP a file in a batch script. Unfortunately, the destination server setup is such that it doesn't allow for shell command line login. So, I am not able to set up SSH keys. My source server is having issues with Expect. So, unable to use... (5 Replies)
Discussion started by: ss112233
5 Replies

3. Shell Programming and Scripting

Sftp through script

hi, I have a requirement where i need to sftp the file from another server. Let me describe in detail: when i login into putty i use my id i.e. kusvi and then i start another acc i.e.cdram where all development works takes place...so if i am in cdram and i need to do sftp i have to exit... (1 Reply)
Discussion started by: gnnsprapa
1 Replies

4. Shell Programming and Scripting

SFTP Script

Hi All, I'm creating an sftp script that will pull data from sftp server and will also move files to a certain folder. My question is that how will i know if the moving of files were successful, is there a way for me to determine it. Thanks, Reign (1 Reply)
Discussion started by: reignangel2003
1 Replies

5. Shell Programming and Scripting

SFTP-how to log individual sftp command error while executing shell script

Hi, I have situation where i need to automate transferring 10000+ files using sftp. while read line do if ; then echo "-mput /home/student/Desktop/folder/$line/* /cygdrive/e/folder/$line/">>sftpCommand.txt fi done< files.txt sftp -b sftpCommand.txt stu@192.168.2.1 The above... (1 Reply)
Discussion started by: noobrobot
1 Replies

6. UNIX for Dummies Questions & Answers

Script for sftp

Hi, I need a script that automatically connect to a sftp server and send a file. The problem I have is that it need to enter the password. As you might enter the password automatically so it would not ask. Thank you. (7 Replies)
Discussion started by: pepeli30
7 Replies

7. UNIX for Dummies Questions & Answers

sftp script in .sh

Hi, I want download files from Server A to Server B when i want run script. my source server : A my Destination server:B I have to run script in server A only. please help me on this. (2 Replies)
Discussion started by: koti_rama
2 Replies

8. Shell Programming and Scripting

sftp script

I am new to the forum. I need help with writing a unix sftp script that will allow me to put a txt file in the destination server. The destination server is a windows box and when I connect from another windows machine, at the dos prompt I need to Type: ftp<sp> ftp-gw<enter> Type: servername... (2 Replies)
Discussion started by: coburn
2 Replies

9. UNIX for Dummies Questions & Answers

SFTP script

I have this script but it is not working I need help, to transmit a file and rename it. #!/bin/ksh final_file="file name" ftp -nvd IP_address << ENDFTP user username password cd <folder where you want to put the file> bin mput $final_file quit ENDFTP (0 Replies)
Discussion started by: HROMERO
0 Replies

10. Shell Programming and Scripting

sftp through a script

Guys How can I use sftp through a shell script? OR is there is a more secure way to transfer files from one host to another (in a non-secure environment)? Please help. I have tried various options. And I am currently doing the transfer of backups manually, I want to automate this. ... (1 Reply)
Discussion started by: skotapal
1 Replies
Login or Register to Ask a Question