1

sftp サーバーからのファイル コピーをスケジュールしたいと考えています。公開鍵は許可されていないため、expect を使用する方法は 1 つしかわかりません。

問題は、ファイル名が毎日変わることですが、ファイル名は実際には日付+.csvなので、スケジュールできます。

しかし、変数ファイル名を設定できません...

2つのスクリプトでこのようなことをしたいです。

スクリプト 1 (sh スクリプト)

ファイル名=日付 %Y%m%d

エクスポートファイル名

スクリプト 2 (exp スクリプト)

sftp サーバーに接続してファイル名を取得します。

出口

私のバスト努力は以下のようなものです。

私の *.sh スクリプト =

始める

#!/bin/sh
file=$(date --date='-2 days' +%Y%m%d.csv)"
# looking for something like this (20121031.csv)
export file
expect /home/desk4/task/sftp.exp

終わり

「/home/desk4/task/sftp.exp」にある期待スクリプト

始める

!/usr/bin/expect

spawn /usr/bin/sftp user@server.com
expect "user@server.com's password:"
send "password"
send "\r"
expect "sftp>"
spawn "get $file \r"
expect "sftp>"
send "bye \r"

終わり

エラー

./sftp.sh: 3: エクスポート: 20121031.csv: 変数名が正しくありません

以下のようなテスト目的のshスクリプトを更新すると...

#!/bin/sh
file=$(date)
export $file
expect /home/harshit/Desktop/1/sftp.exp

====================================== エラー= ./sftp.sh: 3: エクスポート: 2: 変数名が正しくありません

- 終わり -

リプレイありがとうございます..

4

2 に答える 2

1

「変数名が正しくありません」というエラーは、変数の名前ではなく、変数のをエクスポートしたことが原因です:間違っています。export $fileexport file

期待では、グローバルenv配列を介して環境変数にアクセスするため、$env(file)notを使用します$file

于 2012-11-03T19:36:40.530 に答える