Shell-Script
通過 SFTP 將文件列表保存到文本文件
我在下面提供了我自己的答案。
我們有許多使用 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