Shell-Script

通過 SFTP 將文件列表保存到文本文件

  • April 26, 2019

我在下面提供了我自己的答案。

我們有許多使用 SFTP 可以正常工作的 bash 腳本,我想做的就是簡單地將文件夾的 ls 或 dir 重定向到我們 SFTP 伺服器上的文件。

我們可以將其作為 cron 作業執行,也可以手動執行。我可以從遠端伺服器查看文件列表,但我想在文本文件中生成從遠端伺服器到本地伺服器的文件列表。 .

到目前為止,這是我對 bash 腳本所擁有的內容。下面列出的第四個回顯是有問題的行。

#!/bin/bash

localpath=/home/localacct/somepath
remotelocation=/home/account/logs/archive
remotehost=' account@1.1.1.1'

   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

sftp命令非常有限。如果你不能讓它做你想做的事,你可以使用另一種方​​法,即使用SSHFS文件系統掛載遠端目錄。SSHFS 使用 SFTP 作為傳輸協議,因此伺服器端只看到一個 SFTP 客戶端。您需要能夠在客戶端使用FUSE 。

使用 SSHFS,您可以將遠端目錄掛載到現有的空目錄並使用普通命令。

mkdir remote
sshfs "$remotehost:$remotelocation" remote
cd remote

echo *.* >"$localpath/dirlist.txt"

fusermount -u remote
rmdir remote

這是迄今為止最好的:

echo 'ls' | sftp hostname

您可以通過以下方式將輸出轉發到文件中

echo 'ls' | sftp hostname > /tmp/mylist.txt

引用自:https://unix.stackexchange.com/questions/214961