sshpass:命令未找到错误

时间:2016-06-30 17:34:02

标签: linux shell unix ssh sshpass

我正在尝试将文件传输或FTP从一台服务器自动化到另一台服务器。

#!/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 $?

当我执行这个shell脚本时,我在putty中收到以下错误:

 -bash: sshpass: command not found

我尝试使用ssh-keygen -t dsa的ssh无密码方法和其他步骤但我无法访问第二台服务器的putty,因为我无法执行后续步骤。

请帮助

4 个答案:

答案 0 :(得分:16)

您需要在运行代码的客户端服务器上安装sshpass,其中大多数Linux发行版默认情况下都没有安装该工具

如果你在Ubuntu中使用这个命令

  

apt-get install sshpass

on centOS / redhat使用此功能 安装epel

  

的wget   http://download.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm

     

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

安装sshpass

  

yum --enablerepo = epel -y install sshpass

由于

答案 1 :(得分:4)

不!!!! 不要安装sshpass。这是你工作的错误工具。

它不是为您的用例编写的,如果您使用它,您的脚本将比它可能的安全性低得多。我应该知道我在说什么。我写了。

相反,使用调试信息运行服务器,找出无法设置基于密钥的身份验证的原因。最好尽可能使用value

答案 2 :(得分:0)

看一下这篇文章 How to put sshpass command inside a bash script?

如果您想编写sshpass's ssh

脚本
export SSHPASS=password
sshpass -e ssh -oBatchMode=no user@host

答案 3 :(得分:0)

我为CentOS 7获得的一个解决方案:

  1. 点击link

然后将下载rpm。

  1. 将此rpm传输到您的linux系统(您可以使用filezilla等)。
  2. 使用yum install <rpm file name>安装Rpm。

完成