2017-05-28 38 views
2

我已經設置了帶有「SSH Server」應用程序的Android手機,並且希望編寫腳本以使用scp在特定目錄下載最新文件。該腳本將從Linux筆記本電腦運行scp /從遠程Android設備/ SSH服務器安全複製最新文件

問題是,Android不包含像「頭」或「尾巴」的命令,我不知道如何選擇最新的文件。

我能做的最好的是所有的文件從這個目錄複製:

#!/bin/bash 
[email protected]:storage/sdcard0/DCIM/Camera 
scp -P 60839 -oHostKeyAlgorithms=+ssh-dss $dst/* /home/username/projects/3patetas 
done 0 

誰能幫助?

-------編輯-------------

我認爲以下可能的工作,但它會導致對Android的SSH服務器停止:

#!/bin/bash 
remote_dir=/storage/sdcard0/DCIM/Camera 
[email protected] 
scp -P 60839 -oHostKeyAlgorithms=+ssh-dss $dst:'ssh $dst cd $remote_dir ; latest="" ; for i in *.jpg ; do latest=$i ; done ; echo $latest' /home/username/projects/3patetas 
exit 0 
+0

'LS -1T | grep -m 1 .'? – Cyrus

+0

謝謝。 「grep -m 1」。部分工作,就像管道一樣,但「ls」不識別「-1t」 – escuta

+0

「ls -t | grep -m 1」。就足夠了,但是ls沒有-t選項 – escuta

回答

0

這有幫助嗎?

#!/bin/bash 
remote_dir=/storage/sdcard0/DCIM/Camera 
[email protected] 
name="$(ssh $dst "cd $remote_dir"' ; latest="" ; for i in *.jpg ; do latest=$i ; done ; echo $latest')" 
scp -P 60839 -oHostKeyAlgorithms=+ssh-dss $dst:$remote_dir/$name /home/username/projects/3patetas 
exit 0 

或者這樣:

#!/bin/bash 
remote_dir=/storage/sdcard0/DCIM/Camera 
[email protected] 
name=($(ssh $dst "cd $remote_dir"' ; for i in *.jpg ; do date +%s -r $i ; echo $i ; done')) 
name=$(printf "%s %s\n" ${name[@]} | sort -n | tail -1) 
scp -P 60839 -oHostKeyAlgorithms=+ssh-dss $dst:$remote_dir/${name#* } /home/username/projects/3patetas 
exit 0 
+0

非常感謝。這更好。我需要將端口號和主機密鑰類型添加到「名稱」變量,即。 #!/斌/慶典 remote_dir = /存儲/ sdcard0/DCIM /攝像機 [email protected] NAME = 「$(SSH -p 60839 -oHostKeyAlgorithms = + SSH-DSS $ DST」 CD $ remote_dir 「'; latest =」「; for i in * .jpg; do latest = $ i; done; echo $ latest')」 scp -P 60839 -oHostKeyAlgorithms = + ssh-dss $ dst:$ remote_dir/$ name /家用/伊恩/項目/ 3patetas 退出0 然而,它提供了一個奇怪的錯誤消息: [email protected]不是普通文件 – escuta

+0

@escuta和BTW檢查替代verison我剛剛發佈。 Android確實有'date'和'echo',剩下的代碼在本地運行確保文件真的是修改日期的最後一個。 – hidefromkgb

+0

謝謝,試過第二個版本。它仍然遇到了同樣的問題 - 錯誤消息:[email protected]不是一個普通的文件 – escuta

相關問題