私は以下に私自身の答えを与えた。
SFTPを使用して正常に動作するいくつかのbashスクリプトがあります。私がしたいのは、単にフォルダのlsまたはdirをSFTPサーバー上のファイルにリダイレクトすることです。
cronジョブとして実行するか、手動で実行できます。リモートサーバーのファイルリストを見ることができますが、リモートサーバーからローカルサーバーへのファイルリストをテキストファイルとして生成したいと思います。 。
これが私がこれまでbashスクリプトについて知っていることです。以下の4番目のエコーは問題のある行です。
#!/bin/bash
localpath=/home/localacct/somepath
remotelocation=/home/account/logs/archive
remotehost=' [email protected]'
echo > $localpath/list.sftp
echo "cd $remotelocation " >> $localpath/list.sftp
echo "dir *.* " >> $localpath/list.sftp
echo "dir *.* > $localpath/dirlist.txt " >> $localpath/list.sftp
echo "bye " >> $localpath/list.sftp
sftp -b $localpath/list.sftp $remotehost
exit
ベストアンサー1
コマンドはsftp
非常に制限的です。目的のタスクを実行できない場合は、他のアプローチを使用できます。SSHFSファイルシステムSSHFSはSFTPをトランスポートプロトコルとして使用するため、サーバー側にはSFTPクライアントが1つだけ表示されます。利用できる必要があります。ヒューズクライアント側から。
SSHFSを使用すると、リモートディレクトリを既存の空のディレクトリにマウントし、通常のコマンドを使用できます。
mkdir remote
sshfs "$remotehost:$remotelocation" remote
cd remote
echo *.* >"$localpath/dirlist.txt"
fusermount -u remote
rmdir remote