SFTPログイン状態をテストするスクリプト?

SFTPログイン状態をテストするスクリプト?

SFTPサーバーに接続されている自動バックアップ操作を実行する必要があります。最初のステップでは、サーバーに接続してサーバー接続をテストします。正しいサーバーに接続されていることを確認するために、StrictHostKeyCheckingssh_configをyesに設定しました。

SFTPサーバーに接続するときにサーバーの応答をスクリプト化する方法は?疑似コードは次のとおりです。

If connection success
  disconnect
  initiate backup procedure

Else
  log error
  exit script

追加情報:

ForceCommand internal-sftpバックアップサーバーでsshd_configを使用しているため、sshコマンドを実行できません。

ベストアンサー1

ほとんどのSSHファイル転送プロトコル(SFTP)クライアントは、デフォルトで/元の対話型使用のために構築されています。

しかし、バッチモードオプションなどが不足しているという意味ではありませんが、SSHプロトコルを介したスクリプトベースのファイル転送を探している場合、scpまたはlftp

lftp(家)これは私がすべての自動ファイル転送に使用するものであり、エラー処理に優れており、シャットダウン状態が安定しています。信頼性を念頭に置いて設計されています。

多数のオプションがあり、使用する特定のコネクタを指定するなど、必要に応じてlftp提供できます。ssh-oStrictHostKeyChecking=yes

例:

MYSSHOPTIONS="-oStrictHostKeyChecking=yes"
CONNPROG="ssh -a -x ${MYSSHOPTIONS}"

cat > ${cmdfile}  <<- EOF
set sftp:max-packets-in-flight 16
set sftp:connect-program ${CONNPROG}
open -u ${remoteuser},${password-unless-pubkey-setup} sftp://${remotehost}
put localfile -o remotepathname
EOF

lftp -f ${cmdfile} > ${sendlog} 2>&1
RC=$?
if test $RC -ne 0
then
   failed
else
   reliably OK
fi

例は少し長いです。コマンドファイルを生成し、いくつかのオプションを設定し、あるファイルをアップロードし、オプションで別のファイルを反対側localfileにアップロードします。remotepathname


これを無効にするには、sftpバリアントを使用できますlftp

SFTPログインアクセスの確認に興味がある場合は、このテンプレートを追加の実験の開始点として使用できます。

#!/bin/sh -

mykey=/home/localuser/.ssh/id_rsa
remusr=ブフューザー
remhost=server.destination.domain.com
tmpfile=/tmp/sftptest.$$

きれいだ(​) {
  rm -f ${tmpファイル}
}
トラップクリーンアップ0

# これは ~/.ssh/config のオプションに従います (おそらく /etc/ssh/ssh_config.d/*.conf かもしれません)
# /etc/ssh/ssh_configに含まれている場合は、そこに提供されているオプションが適用されます。
sftp -i $mykey -oPubkeyAuthentication=yes -oPasswordAuthentication=no -oKbdInteractiveAuthentication=no -oStrictHostKeyChecking=yes ${remusr}@${remhost} ${tmpfile} 2>&1
  目次
  出口
EOF
ST=$?

$ST -ne 0 をテストする場合
それから
  echo SFTP ログインに失敗しました。 RC=${ST} 1>&2
  $ST 終了
フィリピン諸島

cat ${tmpfile} # または巧妙な grep 演算を実行します。

$ST 終了

おすすめ記事