10

bash スクリプト内で sshpass コマンドを実行しようとしていますが、機能しません。

ターミナルから同じコマンドを実行すると正常に動作しますが、bash スクリプトで実行すると動作しません。

#! /bin/bash

sshpass -p 'password' ssh user@host command

セキュリティの問題は認識していますが、今は重要ではありません。

誰か助けてくれませんか?私は何かが欠けていますか?

ありがとう

4

5 に答える 5

17

-o StrictHostKeyChecking=no」オプションを ssh に試してみてください (「-o」は、オプションを使用することを ssh に伝えるフラグです)。これにより、キーが「既知のホスト」リストにない場合でも、ssh 接続からの着信 RSA キーが受け入れられます。

sshpass -p 'password' ssh -o StrictHostKeyChecking=no user@host 'command'
于 2014-06-01T20:04:48.040 に答える
16

which sshpassコマンドラインで実行して、絶対パスを取得sshpassし、bash スクリプトで置き換えます。

実行しようとしている に対しても、おそらく同じことを行う必要がありcommandます。

問題は、それが見つからないことかもしれません。

于 2013-10-10T18:19:34.937 に答える
8

1 -sshpass's ssh次のようにコマンドをスクリプト化できます。

#!/bin/bash

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

2 -次のようにsshpasssftpコマンドをスクリプト化できます。

#!/bin/bash

export SSHPASS=password

sshpass -e sftp -oBatchMode=no -b - user@host << !
   put someFile
   get anotherFile
   bye
!
于 2013-10-10T17:45:26.480 に答える
5

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;"
于 2015-10-13T15:43:21.300 に答える
1

これは私のために働いた:

#!/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
于 2016-06-14T10:54:24.300 に答える