1つのサーバーから別のサーバーへのファイル転送または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 [email protected] <<_EOF_
cd /upload/
put $FILE
_EOF_
# Exit
exit $?
このシェルスクリプトを実行すると、PuTTYで次のエラーが発生します。
-bash: sshpass: command not found
ssh-keygen -t dsa
などの手順でsshのパスワードなしの方法を使用してみましたが、次の手順を実行できないため、2番目のサーバーのPuTTYにアクセスできません。
親切に助けて
ほとんどのLinuxディストリビューションではデフォルトでインストールされないツールである、コードを実行しているクライアントサーバーにsshpassをインストールする必要があります。
ubuntuにいる場合は、このコマンドを使用してください
apt-get install sshpass
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
ありがとう
NO !!!! sshpassをインストールしません。それはあなたの仕事にとって間違った道具です。
それはあなたのユースケースのために書かれていなかったので、それを使用すると、スクリプトの安全性はかなり低くなります。私は何について話しているのか知っているべきです。私はそれを書きました。
代わりに、デバッグ情報を使用してサーバーを実行し、鍵ベースの認証のセットアップに失敗した理由を解明してください。可能な限りあらゆる方法でsshpass
を使用することをお勧めします。
CentOS 7のソリューションの1つ:
そしてrpmがダウンロードされます。
yum install <rpm file name>
。[〜#〜]完了[〜#〜]
この投稿を見てください sshpassコマンドをbashスクリプト内に配置する方法?
スクリプトを作成する場合はsshpass's ssh
export SSHPASS=password
sshpass -e ssh -oBatchMode=no user@Host