SFTPサーバーに接続されている自動バックアップ操作を実行する必要があります。最初のステップでは、サーバーに接続してサーバー接続をテストします。正しいサーバーに接続されていることを確認するために、StrictHostKeyChecking
ssh_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 終了