bash スクリプト内で sshpass コマンドを実行しようとしていますが、機能しません。
ターミナルから同じコマンドを実行すると正常に動作しますが、bash スクリプトで実行すると動作しません。
#! /bin/bash
sshpass -p 'password' ssh user@host command
セキュリティの問題は認識していますが、今は重要ではありません。
誰か助けてくれませんか?私は何かが欠けていますか?
ありがとう
「-o StrictHostKeyChecking=no」オプションを ssh に試してみてください (「-o」は、オプションを使用することを ssh に伝えるフラグです)。これにより、キーが「既知のホスト」リストにない場合でも、ssh 接続からの着信 RSA キーが受け入れられます。
sshpass -p 'password' ssh -o StrictHostKeyChecking=no user@host 'command'
which sshpass
コマンドラインで実行して、絶対パスを取得sshpass
し、bash スクリプトで置き換えます。
実行しようとしている に対しても、おそらく同じことを行う必要がありcommand
ます。
問題は、それが見つからないことかもしれません。
1 -sshpass's ssh
次のようにコマンドをスクリプト化できます。
#!/bin/bash
export SSHPASS=password
sshpass -e ssh -oBatchMode=no user@host
2 -次のようにsshpass
のsftp
コマンドをスクリプト化できます。
#!/bin/bash
export SSHPASS=password
sshpass -e sftp -oBatchMode=no -b - user@host << !
put someFile
get anotherFile
bye
!
bashスクリプトファイル内からsshpassが指定された後、サーバー上でコマンドを実行する方法に関する実際の質問に、受け入れられた回答がどのように答えるかわかりませんでした。そのため、私は答えを提供しています。
提供されたスクリプト コマンドの後に、以下のような追加のコマンドを実行します。
sshpass -p 'password' ssh user@host "ls; whois google.com;" #or whichever commands you would like to use, for multiple commands provide a semicolon ; after the command
あなたのスクリプトで:
#! /bin/bash
sshpass -p 'password' ssh user@host "ls; whois google.com;"
これは私のために働いた:
#!/bin/bash
#Variables
FILELOCAL=/var/www/folder/$(date +'%Y%m%d_%H-%M-%S').csv
SFTPHOSTNAME="myHost.com"
SFTPUSERNAME="myUser"
SFTPPASSWORD="myPass"
FOLDER="myFolderIfNeeded"
FILEREMOTE="fileNameRemote"
#SFTP CONNECTION
sshpass -p $SFTPPASSWORD sftp $SFTPUSERNAME@$SFTPHOSTNAME << !
cd $FOLDER
get $FILEREMOTE $FILELOCAL
ls
bye
!
おそらく、sshpass をインストールする必要があります。
sudo apt-get install sshpass