linuxshellunixsshsshpass

sshpass: command not found error


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


Solution

  • 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

    apt-get install sshpass

    on centOS/redhat use this install epel

    wget https://archives.fedoraproject.org/pub/archive/epel/6/x86_64/epel-release-6-8.noarch.rpm

    rpm -ivh epel-release-6-8.noarch.rpm

    install sshpass

    yum --enablerepo=epel -y install sshpass

    Thanks