sshpass:找不到命令错误

sshpass: command not found error

我正在尝试自动执行文件传输或 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 "[=10=]"`

# Set the environment variables
. ./Environment.sh [=10=]

#######################################################################################################
# 
#######################################################################################################


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,因此我无法执行后续步骤。

请帮忙

您将需要在您所在的客户端服务器上安装 sshpass 运行 您的代码中包含的工具在大多数 Linux 发行版

上均未默认安装

如果您在 Ubuntu 使用此命令

apt-get install sshpass

在 centOS/redhat 使用这个 安装 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

安装 sshpass

yum --enablerepo=epel -y install sshpass

谢谢

NO!!!! 不要安装 sshpass。它不是适合您工作的工具。

它不是为您的用例编写的,如果您使用它,您的脚本的安全性将大大降低。我应该知道我在说什么。我写的。

相反,运行 您的服务器提供调试信息并找出您未能设置基于密钥的身份验证的原因。最好使用 sshpass 以各种可能的方式。

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

  1. here
  2. 下载 sshpass

然后将下载 rpm。

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

完成