質問編集履歴

6

文章の変更

2017/04/28 08:26

投稿

satoshi501
satoshi501

スコア60

test CHANGED
@@ -1 +1 @@
1
- FTPコマンドを実行するシェルスクリプトをSFTPコマンドに変更したい
1
+ SFTPコマンドをシェルスクリプトで実行したい
test CHANGED
@@ -2,11 +2,9 @@
2
2
 
3
3
 
4
4
 
5
- 現在FTPでファイルを転送するプログラムをシェルスクリプトに作成、それを実行ることでファイル転送を行ってる環境があり
5
+ 何度も修正すいません
6
6
 
7
-
8
-
9
- これが次回よりSFTPにファイル転送を行うようにすことになりました
7
+ 一から作成しなおしみて、詰まってい部分がありま
10
8
 
11
9
  修正したファイルです
12
10
 
@@ -16,61 +14,35 @@
16
14
 
17
15
 
18
16
 
17
+ PASS1=hogehoge
18
+
19
- LOCAL_FILE="/Users/admin/Desktop/test.html"
19
+ TARGET_DIR="/home/public_html"
20
+
21
+ expect -c "
22
+
23
+ # タイムアウト値の指定
24
+
25
+ set timeout 10
26
+
27
+ spawn sftp user@www.test.jp
20
28
 
21
29
 
22
30
 
23
- REMOTE_IP="www..jp"
31
+ expect \"Are you sure you want to continue connecting (yes/no)?\" {
24
32
 
25
- REMOTE_USER=""
33
+ send \"yes\n\"
26
34
 
27
- REMOTE_PASS=""
35
+ expect \"password:\"
28
36
 
29
- REMOTE_PATH="/home/"
37
+ send \"${PASS1}\n\"
30
38
 
31
39
 
32
40
 
33
- function sftpUpload(){
41
+ } \"password:\" {
42
+
43
+ send \"${PASS1}\n\"
34
44
 
35
45
 
36
-
37
- cat <<EOF>> sftp.bat
38
-
39
- cd ${REMOTE_PATH}
40
-
41
- put ${LOCAL_FILE}
42
-
43
- quit
44
-
45
- EOF
46
-
47
-
48
-
49
- function sftpUpload(){
50
-
51
- expect -c "
52
-
53
- set timeout 10
54
-
55
- spawn sftp -o \"batchmode no\" -b sftp.bat ${REMOTE_USER}@${REMOTE_IP}
56
-
57
- expect{
58
-
59
- \" Are you sure you want to continue connecting(yes/no)? \"{
60
-
61
- send \"yes\r\"
62
-
63
- expect \"password:\"
64
-
65
- send \"${REMOTE_PASS}\r\"
66
-
67
- } \"password:\" {
68
-
69
- send \"$REMOTE_PASS}\r\"
70
-
71
-
72
-
73
- }
74
46
 
75
47
  }
76
48
 
@@ -82,26 +54,24 @@
82
54
 
83
55
 
84
56
 
85
- }
86
-
87
-
88
-
89
- sftpUpload
90
-
91
-
92
-
93
-
94
-
95
57
  ```
96
58
 
97
59
 
98
60
 
99
- このようにsftpのシェルスクリ作成してみましたがスクリプトエディタで実行すると
61
+ このプログラムをターミナルで実行する
100
62
 
101
- error "/Users/admin/Desktop/ftp_put.sh: line 45: syntax error: unexpected end of file" number 2
63
+ sftp>
102
64
 
103
- 表示されてしまいま
65
+ 表示ることはできたのですが、この次のコマンドの
104
66
 
67
+ cd
105
68
 
69
+ を入力したいのですが、
106
70
 
71
+ expect \"sftp>\"
72
+
73
+ send \"cd ${ディレクトリ}\n\"
74
+
107
- どこで間違えているのでしょうか?
75
+ としもうまくきません
76
+
77
+ すいませんがsftpにログインした次のコードはどのように書けばいいのでしょうか?

5

コード修正

2017/04/28 08:26

投稿

satoshi501
satoshi501

スコア60

test CHANGED
File without changes
test CHANGED
@@ -16,17 +16,17 @@
16
16
 
17
17
 
18
18
 
19
- LOCAL_FILE="/Users/admin/Desktop/refreshroom/yoyaku.html"
19
+ LOCAL_FILE="/Users/admin/Desktop/test.html"
20
20
 
21
21
 
22
22
 
23
- REMOTE_IP="www.med.nagoya-u.ac.jp"
23
+ REMOTE_IP="www..jp"
24
24
 
25
- REMOTE_USER="web-sitefiles2"
25
+ REMOTE_USER=""
26
26
 
27
- REMOTE_PASS="723Y6xV5Jc"
27
+ REMOTE_PASS=""
28
28
 
29
- REMOTE_PATH="/home/web-sitefiles2/public_html"
29
+ REMOTE_PATH="/home/"
30
30
 
31
31
 
32
32
 

4

コード修正

2017/04/28 02:08

投稿

satoshi501
satoshi501

スコア60

test CHANGED
File without changes
test CHANGED
@@ -16,35 +16,25 @@
16
16
 
17
17
 
18
18
 
19
- # remote serverへ転送するローカルファイル.
20
-
21
- LOCAL_FILE="/Users/admin/Desktop/test.html"
19
+ LOCAL_FILE="/Users/admin/Desktop/refreshroom/yoyaku.html"
22
20
 
23
21
 
24
22
 
25
- # remote server 情報.
23
+ REMOTE_IP="www.med.nagoya-u.ac.jp"
26
24
 
27
- REMOTE_IP="www.test.ac.jp"
25
+ REMOTE_USER="web-sitefiles2"
28
26
 
29
- REMOTE_USER="web"
27
+ REMOTE_PASS="723Y6xV5Jc"
30
28
 
31
- REMOTE_PASS="test"
32
-
33
- REMOTE_PATH="/public_html"
29
+ REMOTE_PATH="/home/web-sitefiles2/public_html"
34
30
 
35
31
 
36
32
 
37
-
38
-
39
- # sftpでファイルアップロード.
40
-
41
- function sftpUpload() {
33
+ function sftpUpload(){
42
34
 
43
35
 
44
36
 
45
- # /tmp/*.csv を ${REMOTE_PATH} へアップロードする
46
-
47
- cat <<EOF > sftp.bat
37
+ cat <<EOF>> sftp.bat
48
38
 
49
39
  cd ${REMOTE_PATH}
50
40
 
@@ -56,11 +46,7 @@
56
46
 
57
47
 
58
48
 
59
- # sftpでファイルアップロード.
60
-
61
- function sftpUpload() {
49
+ function sftpUpload(){
62
-
63
-
64
50
 
65
51
  expect -c "
66
52
 
@@ -68,9 +54,9 @@
68
54
 
69
55
  spawn sftp -o \"batchmode no\" -b sftp.bat ${REMOTE_USER}@${REMOTE_IP}
70
56
 
71
- expect {
57
+ expect{
72
58
 
73
- \" Are you sure you want to continue connecting (yes/no)? \" {
59
+ \" Are you sure you want to continue connecting(yes/no)? \"{
74
60
 
75
61
  send \"yes\r\"
76
62
 
@@ -78,9 +64,11 @@
78
64
 
79
65
  send \"${REMOTE_PASS}\r\"
80
66
 
81
- } \"password:\"
67
+ } \"password:\" {
82
68
 
83
- send \"${REMOTE_PASS}\r\"
69
+ send \"$REMOTE_PASS}\r\"
70
+
71
+
84
72
 
85
73
  }
86
74
 
@@ -92,13 +80,15 @@
92
80
 
93
81
 
94
82
 
83
+
84
+
95
85
  }
96
86
 
97
87
 
98
88
 
99
- # sftpによるファイル転送実行.
89
+ sftpUpload
100
90
 
101
- sftpUpload
91
+
102
92
 
103
93
 
104
94
 

3

全体的に変更

2017/04/28 02:07

投稿

satoshi501
satoshi501

スコア60

test CHANGED
File without changes
test CHANGED
@@ -8,51 +8,7 @@
8
8
 
9
9
  これが次回よりSFTPにてファイル転送を行うようにすることになりました
10
10
 
11
-
12
-
13
- 現在のプログラム
14
-
15
- ```シェスクリプト
11
+ 修正したファイです
16
-
17
- #!/bin/sh
18
-
19
- HOST_NAME="www.test.jp"
20
-
21
- USER_NAME="testname"
22
-
23
- PASSWORD="abcde"
24
-
25
- LOCAL_DIR="/Users/admin/Desktop/test.html"
26
-
27
-
28
-
29
- ftp -n ${HOST_NAME} << _EOF_
30
-
31
- user ${USER_NAME} ${PASSWORD}
32
-
33
- cd "www"
34
-
35
- cd "testfolder"
36
-
37
- put ${LOCAL_DIR} "test.html"
38
-
39
- bye
40
-
41
- _EOF_
42
-
43
- ```
44
-
45
-
46
-
47
- これをsftpに変更するにはどうしたらいいのでしょうか?
48
-
49
-
50
-
51
- テスト環境がないため、変更日当日まで色々試すこともできない状態です
52
-
53
- すいませんがご教授お願い致します
54
-
55
-
56
12
 
57
13
  ```
58
14
 

2

コードの追加

2017/04/27 08:00

投稿

satoshi501
satoshi501

スコア60

test CHANGED
File without changes
test CHANGED
@@ -51,3 +51,111 @@
51
51
  テスト環境がないため、変更日当日まで色々試すこともできない状態です
52
52
 
53
53
  すいませんがご教授お願い致します
54
+
55
+
56
+
57
+ ```
58
+
59
+ #!/bin/sh
60
+
61
+
62
+
63
+ # remote serverへ転送するローカルファイル.
64
+
65
+ LOCAL_FILE="/Users/admin/Desktop/test.html"
66
+
67
+
68
+
69
+ # remote server 情報.
70
+
71
+ REMOTE_IP="www.test.ac.jp"
72
+
73
+ REMOTE_USER="web"
74
+
75
+ REMOTE_PASS="test"
76
+
77
+ REMOTE_PATH="/public_html"
78
+
79
+
80
+
81
+
82
+
83
+ # sftpでファイルアップロード.
84
+
85
+ function sftpUpload() {
86
+
87
+
88
+
89
+ # /tmp/*.csv を ${REMOTE_PATH} へアップロードする
90
+
91
+ cat <<EOF > sftp.bat
92
+
93
+ cd ${REMOTE_PATH}
94
+
95
+ put ${LOCAL_FILE}
96
+
97
+ quit
98
+
99
+ EOF
100
+
101
+
102
+
103
+ # sftpでファイルアップロード.
104
+
105
+ function sftpUpload() {
106
+
107
+
108
+
109
+ expect -c "
110
+
111
+ set timeout 10
112
+
113
+ spawn sftp -o \"batchmode no\" -b sftp.bat ${REMOTE_USER}@${REMOTE_IP}
114
+
115
+ expect {
116
+
117
+ \" Are you sure you want to continue connecting (yes/no)? \" {
118
+
119
+ send \"yes\r\"
120
+
121
+ expect \"password:\"
122
+
123
+ send \"${REMOTE_PASS}\r\"
124
+
125
+ } \"password:\"
126
+
127
+ send \"${REMOTE_PASS}\r\"
128
+
129
+ }
130
+
131
+ }
132
+
133
+ interact
134
+
135
+ "
136
+
137
+
138
+
139
+ }
140
+
141
+
142
+
143
+ # sftpによるファイル転送実行.
144
+
145
+ sftpUpload
146
+
147
+
148
+
149
+ ```
150
+
151
+
152
+
153
+ このようにsftpのシェルスクリプトを作成してみましたがスクリプトエディタで実行すると
154
+
155
+ error "/Users/admin/Desktop/ftp_put.sh: line 45: syntax error: unexpected end of file" number 2
156
+
157
+ と表示されてしまいます
158
+
159
+
160
+
161
+ どこで間違えているのでしょうか?

1

文章の編集

2017/04/27 05:41

投稿

satoshi501
satoshi501

スコア60

test CHANGED
File without changes
test CHANGED
@@ -44,7 +44,7 @@
44
44
 
45
45
 
46
46
 
47
- これをそのままsftpに変更することができるのでしょうか?
47
+ これをsftpに変更するにはどうしたらいいのでしょうか?
48
48
 
49
49
 
50
50