I am trying to automate the file transfer or FTP from one server to the other.
#!/bin/bash
### In this model, the same filename is processed on each run.
### A timestamp is added to the result file and data file is copied to the archive or error folder with a timestamp after processing.
# Set current directory
cd `dirname "$0"`
# Set the environment variables
. ./Environment.sh $0
#######################################################################################################
#
#######################################################################################################
FILE=/hcm/Inbound/file.csv
sshpass -p 'xyz' sftp -oBatchMode=no -b - -oStrictHostKeyChecking=no zys@192.abc.taleo.net <<_EOF_
cd /upload/
put $FILE
_EOF_
# Exit
exit $?
When I am executing this shell script I am getting the following error in putty :
-bash: sshpass: command not found
I tried using the ssh passwordless method by ssh-keygen -t dsa
and other steps but I cannot access putty of the second server due to which I am not being able to execute the next steps.
Kindly help
you will need to install sshpass on the client server you are running your code in which is a tool that is not installed by default on most Linux distro
if you are in Ubuntu use this command
on centOS/redhat use this install epel
install sshpass
Thanks
One solution I got for CentOS 7 :
And rpm will be downloaded.
yum install <rpm file name>
.DONE
NO!!!! Don't install sshpass. It is the wrong tool for your job.
It was not written for your use case, and if you do use it, your script will be considerably less secure than it can be. I should know what I'm talking about. I wrote it.
Instead, run your server with debugging info and figure out why you failed to set up key based authentication. It is preferable to using
sshpass
in every possible way.Take a look at this post How to put sshpass command inside a bash script?
If you would like to script
sshpass's ssh