回答編集履歴
2
訂正
test
CHANGED
@@ -43,7 +43,9 @@
|
|
43
43
|
```
|
44
44
|
|
45
45
|
三点目:
|
46
|
-
|
46
|
+
~~mputできるはずですが、~~
|
47
|
+
⇒ sftpのmputでは出来ないようです。
|
48
|
+
|
47
49
|
> 上記の結果だと、下記のように認識されてしまいました。
|
48
50
|
|
49
51
|
そのカンマは何ですかね?
|
1
誤り訂正
test
CHANGED
@@ -20,14 +20,14 @@
|
|
20
20
|
LOG1=(`find /var/log/sample*.gz -mtime +0 -and -mtime -4`)
|
21
21
|
LOG2=(`find /var/log/test/sample*.lgz -mtime +0 -and -mtime -4`)
|
22
22
|
|
23
|
-
|
23
|
+
CMD1=
|
24
|
-
|
24
|
+
for a in "${LOG1[@]}"
|
25
|
+
do CMD1+="put $a"$'\n'
|
26
|
+
done
|
25
|
-
|
27
|
+
CMD2=
|
26
|
-
fi
|
27
|
-
if [ ${#LOG2[@]} -gt 0 ]
|
28
|
-
|
28
|
+
for a in "${LOG2[@]}"
|
29
|
+
do CMD2+="put $a"$'\n'
|
29
|
-
e
|
30
|
+
done
|
30
|
-
fi
|
31
31
|
|
32
32
|
# SFTP接続
|
33
33
|
sftp -i /home/user/.ssh/id_rsa username@aa.bb.cc.dd << END
|
@@ -37,23 +37,6 @@
|
|
37
37
|
$CMD1
|
38
38
|
# LOG2の3日分のログを送信
|
39
39
|
$CMD2
|
40
|
-
|
41
|
-
# SFTP切断
|
42
|
-
quit
|
43
|
-
```
|
44
|
-
シェルに慣れていれば、変数展開の`:+`の機能を使って、コンパクトに書けます。
|
45
|
-
```Bash
|
46
|
-
LOG1=(`find /var/log/sample*.gz -mtime +0 -and -mtime -4`)
|
47
|
-
LOG2=(`find /var/log/test/sample*.lgz -mtime +0 -and -mtime -4`)
|
48
|
-
|
49
|
-
# SFTP接続
|
50
|
-
sftp -i /home/user/.ssh/id_rsa username@aa.bb.cc.dd << END
|
51
|
-
cd /log/$1/
|
52
|
-
|
53
|
-
# LOG1の3日分のログを送信
|
54
|
-
${LOG1:+mput} ${LOG1[@]}
|
55
|
-
# LOG2の3日分のログを送信
|
56
|
-
${LOG2:+mput} ${LOG2[@]}
|
57
40
|
|
58
41
|
# SFTP切断
|
59
42
|
quit
|
@@ -69,4 +52,7 @@
|
|
69
52
|
`find`は改善の余地がありますが、とりあえずそのままにしてあります。
|
70
53
|
最初から`if [ -d /var/log/test ]`で分岐する案もあるでしょう。
|
71
54
|
|
55
|
+
##訂正
|
56
|
+
`mput`に複数ファイルを指定出来ないので、訂正。
|
72
57
|
|
58
|
+
|