BCP11,BCP12,BCP13,BCP14.....BCPXX
どのフォルダにBCPDUMP
ファイルがあるかなど、サーバーフォルダの次の詳細を含むsftpファイルスクリプトがあります。
ファイル名: file_sftp.sh
#!/usr/bin/expect
spawn sftp [email protected]
expect "[email protected]'s password:"
send "password\n"
expect "sftp>"
send "get *Backup/GetBackup/BCP*/*BCPDUMP/20150925/20150925_profile*\n"
expect "sftp>"
send "bye\n"
このスクリプトを実行すると、サーバーには約12個のファイルがありますが、私は1つのファイルのみを取得します。次のスクリプト出力が表示されます。
spawn sftp [email protected]
Connecting to xx.xxx.x.xxx...
Password:
sftp> get *Backup/GetBackup/BCP*/*BCPDUMP/20150925/20150925_profile*
Couldn't get handle: No such file or directory^M
Couldn't get handle: No such file or directory^M
Couldn't get handle: No such file or directory^M
Fetching /rsi/Backup/GetBackup/BCP10/BCPDUMP/20150925/20150925_profile_410.list.Z to 20150925_profile_410.list.Z
^M/rsi/Backup/GetBackup/BCP10/BCPDUMP/20150925/20150925_profile_410.list.Z 0% 0 0.0KB/s --:-- ETA^M/rsi/Backup/GetBackup/BCP10/BCPDUMP/20150925/20150925_profile_410.list.Z 66% 1152KB 1.1MB/s 00:00 ETA^M/rsi/Backup/GetBackup/BCP10/BCPDUMP/20150925/20150925_profile_410.list.Z 100% 1730KB 864.9KB/s 00:02
答え1
ディレクトリを検索しようとしているのでget -r
。
答え2
BCP* および *BCPDUMP ディレクトリーの名前が既にわかっている場合は、すべての (*) に対して 1 行に 1 回だけこの文字を使用してみてください。
別の行にディレクトリ名を入力するのが悪いと思う場合は、コマンドを使用してすべてのディレクトリを一覧ls
表示して配列に配置できます。次に、各ディレクトリまたは他の配列値パスに使用可能なすべてのファイルをダウンロードします。 。
答え3
command
時間がかかる場合は、次の設定を試してください。
send "command\r"
expect {
timeout {
puts "Running..."
exp_continue
}
"%PROMPT%" {
puts "Finished."
}
}
send "next command\r"
引き続き注文をtimeout
待ちます。exp_continue
%PROMPT%
答え4
なぜ期待を使うのか分かりません。
シェルスクリプトでこのスニペットを使用してください...
ftp -i -n ftp.somehost.com <<-EOF
user somelogin somepassword
mget *
bye
EOF
各行(user、mget、bye、EOF)は「タブ」文字で始まります。
また、特定のファイルセットを取得する場合(2つのファイルより大きい場合)
mget file1 file2 file3 file4 ... filen