質問編集履歴

1

文法の修正

2022/04/30 00:15

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -1,55 +1,13 @@
1
1
  ### 解決したいこと
2
2
  ローカルサーバからsftp接続し、リモートサーバへローカルサーバのログファイルを転送するシェルスクリプトを作成しております。
3
- その際に、ログファイルの転送結果をログ出力したいのですが、**成功/失敗ステータスをログファイルに付与する**ことは可能でしょうか。
3
+ その際に、ログファイルの転送結果をログ出力したいのですが、成功/失敗ステータスをログファイルに付与することは可能でしょうか。
4
4
 
5
5
  ##### ログ出力にて行いたい要件
6
6
  ・単一スクリプト
7
7
  ・ワンライナー
8
8
  ・処理開始時間 (日付/時間)
9
9
  ・転送状況
10
- **・転送結果(成功/失敗ステータス)**
10
+ ・転送結果(成功/失敗ステータス)
11
- ・scpなどではなく、sftpにて実行
12
-
13
- *expectなどのインストールが必要なものは使用出来ません。
14
-
15
- ### 現在のソースコード
16
- ```bash
17
- #!/bin/bash
18
-
19
- LOG1_PATH="/var/log/"
20
- LOG1=(`find $LOG1_PATH -name "sample1*.gz" -mtime +0 -and -mtime -4`)
21
-
22
- # ディレクトリ存在チェック
23
- LOG2_PATH=“/var/log/sample/”
24
- if [ -d $LOG2_PATH ]; then
25
- LOG2=(`find $LOG2_PATH -name "sample2*.gz" -mtime +0 -and -mtime -4`)
26
- fi
27
-
28
- # 3日分のログファイルを転送出来るよう設定
29
- LOG1_PUT=
30
- for i in "${LOG1[@]}"
31
- do
32
- LOG1_PUT+="put $i"$'¥n'
33
- done
34
-
35
- LOG2_PUT=
36
- for i in "${LOG2[@]}"
37
- do
38
- LOG2_PUT+="put $i"$'¥n'
39
- done
40
-
41
- # sftp接続
42
- sftp -i /home/user/.ssh/id_rsa username@aa.bb.cc.dd << END 2>&1 | sed -e 's/sftp> /¥n/g' | sed -e 's/¥s¥+$//g' -e 's/¥s¥+/ /g' -e '/^&/d' -e "s/^/$(date $'+%Y-m-%d %T') /g" >> log_sample.log
43
- cd /var/$1
44
-
45
- $LOG1_PUT
46
- $LOG2_PUT
47
-
48
- quit
49
- END
50
- ```
51
- 上記の「# sftp接続」箇所のリダイレクトを指定することで、処理の実行時間、ワンライナー、転送状況の出力は出来るようになりました。
52
- ただ、成功/失敗ステータスのみ出力出来ていない状況になります。
53
11
 
54
12
  ### 自分で試したこと
55
13
  「$?」にて成功時には0, 失敗時には1のステータスを付与することが出来ると思い、「LOG1_PUT+="put $i"$'¥n'」箇所に追記したりしましたが下記のように認識され、意図通りに出力が出来ませんでした。