18

我正在尝试自动化从一台服务器到另一台服务器的文件传输或 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 无密码方法 by ssh-keygen -t dsa和其他步骤,但我无法访问第二台服务器的腻子,因此我无法执行后续步骤。

请帮助

4

3 回答 3

44

您将需要在运行代码的客户端服务器上安装 sshpass,该工具是大多数 Linux 发行版默认未安装的工具

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

apt-get 安装 sshpass

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

安装 sshpass

yum --enablerepo=epel -y 安装 sshpass

谢谢

于 2016-06-30T17:37:44.283 回答
7

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

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

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

于 2016-06-30T18:11:52.980 回答
1

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

  1. 从这里下载 sshpass

并且 rpm 将被下载。

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

完毕

于 2019-12-30T10:53:02.843 回答