3 Dim oHttpRequest, strUrl, userPassword
7 Set RegExCd = New RegExp
8 RegExCd.Pattern = "(Curr Dir:)" & "(.+)\n"
10 Set RegExBody = New RegExp
11 RegExBody.Global = true
12 RegExBody.Pattern = "</B>((.|\n)*)</PRE>"
14 Dim Match,mc,Matches,m
20 WScript.StdOut.Write "'telnet.cgi'がある場所を入力してください。 (例:example.com/hoge/telnet.cgi):"
21 strUrl =Wscript.StdIn.ReadLine
23 Wscript.Echo "Cancelled."
26 If Left(strUrl, 7) <> "http://" Then
27 strUrl = "http://" & strUrl
30 Set oHttpRequest = CreateObject("Microsoft.XMLHTTP")
31 oHttpRequest.Open "GET", strUrl, False
32 If Err.Number <> 0 Then
33 WScript.echo strUrl & "は有効なアドレスではありません。"
34 'WScript.echo "Error : " & Err.Number & ": " & Err.Description
40 If (oHttpRequest.Status < 200 Or oHttpRequest.Status >= 300) Then Wscript.Quit
41 WScript.StdOut.Write "パスワードを入力してください:"
42 userPassword = Wscript.StdIn.ReadLine
44 ' パスワード送信とカレントディレクトリ取得
45 Set oHttpRequest = WScript.CreateObject("Microsoft.XMLHTTP")
46 Call oHttpRequest.Open("POST", strUrl, False)
47 Call oHttpRequest.setRequestHeader("Content-Type", "application/x-www-form-urlencoded")
48 Call oHttpRequest.Send("pass="&userPassword)
49 Set Matches = RegExCd.Execute(oHttpRequest.responseText)
50 If Err.Number <> 0 Or Matches.Count = 0 Then
51 WScript.echo "アドレスまたはパスワードが有効ではありません。"
55 For Each Match in Matches
56 Get_Data = Replace(Replace(Replace(Match.Value, vbCr, ""), vbLf, ""), vbCrLf, "")
57 If InStr(Get_Data,"Curr Dir:") <> 0 Then cwd=right(Get_Data, len(Get_Data)-9)
61 WScript.StdOut.Write cwd&":>"
62 strExpr = Wscript.StdIn.ReadLine
64 MyArray = Split(strExpr, " ", -1, 1)
65 Select Case LCase(Trim(MyArray(0)))
75 Set oHttpRequest = WScript.CreateObject("Microsoft.XMLHTTP")
76 Call oHttpRequest.Open("POST", strUrl, False)
77 Call oHttpRequest.setRequestHeader("Accept-Encoding", "gzip,deflate,compress")
78 Call oHttpRequest.setRequestHeader("Content-Type", "application/x-www-form-urlencoded")
79 Call oHttpRequest.Send("pass="&userPassword&"&dir="&cwd&"&cmd="&strExpr)
82 Set stm = CreateObject("ADODB.Stream")
85 stm.Write oHttpRequest.responseBody 'バイナリを書き込み
86 stm.Position = 0 '先頭に戻してから
87 stm.Type = 2 'テキストモードに変更
88 stm.Charset = "Shift_JIS"
89 strResult = stm.ReadText(-1) 'データ全体を読み込む
92 Set mc = RegExBody.Execute(strResult)
93 WScript.Echo Replace(Replace(mc(0).SubMatches(0), "<", "<"), ">", ">")
97 Set oHttpRequest = Nothing
99 Set Matches = RegExCd.Execute(strResult)
100 For Each Match in Matches
101 Get_Data = Replace(Replace(Replace(Match.Value, vbCr, ""), vbLf, ""), vbCrLf, "")
102 If InStr(Get_Data,"Curr Dir:") <> 0 Then cwd=right(Get_Data, len(Get_Data)-9)
110 Set fso = CreateObject("Scripting.FileSystemObject")
111 If (fso.FileExists(file)) Then
112 WScript.StdOut.Write "同名のファイルがあります。上書きしますか?(はい(y)/いいえ(n)): "
113 yn = Wscript.StdIn.ReadLine
114 If yn = "" Or LCase(yn) = "n" Then
115 WScript.Echo "ダウンロードを中止しました。"
121 Dim data, xmldom, node
122 Set xmldom = WScript.CreateObject("Microsoft.XMLDOM")
123 Set node = xmldom.CreateElement("base64-node")
124 node.DataType = "bin.base64"
125 Set oHttpRequest = WScript.CreateObject("Microsoft.XMLHTTP")
126 Call oHttpRequest.Open("POST", strUrl, False)
127 Call oHttpRequest.setRequestHeader("Content-Type", "application/x-www-form-urlencoded")
128 Call oHttpRequest.setRequestHeader("Accept-Encoding", "gzip,deflate")
129 Call oHttpRequest.Send("pass="&userPassword&"&dir="&cwd&"&cmd=perl -MMIME::Base64 -0777 -ne 'print encode_base64($_)' < "&cwd&"/"&file)
130 Set stm = CreateObject("ADODB.Stream")
131 stm.Type = 1 'バイナリモード
133 stm.Write oHttpRequest.responseBody 'バイナリを書き込み
135 stm.Type = 2 'テキストモードに変更
136 stm.Charset = "Shift_JIS"
137 stm.LineSeparator = 10
138 Set oHttpRequest = Nothing
142 Do While stm.EOS = False
143 records = stm.ReadText(-2)
144 strResult = strResult & records
145 If InStr(records,"</PRE>") Then i = 0
146 If i = 1 Then node.text = node.text & records
147 If InStr(records,"</B>") Then i = 1
153 If IsNull(node.NodeTypedValue) Then
154 Wscript.Echo "ファイルが存在しません"
155 Wscript.Echo node.text
156 Wscript.Echo strResult
160 ' SaveOptionsEnum Values
161 Const adSaveCreateNotExist = 1 ' ファイルがないとき作成する
162 Const adSaveCreateOverWrite = 2 ' ファイルがあるとき上書きする
164 Set stm = CreateObject("ADODB.Stream")
167 stm.write node.NodeTypedValue
168 stm.saveToFile file, adSaveCreateOverWrite
177 Set fso = CreateObject("Scripting.FileSystemObject")
178 If Not(fso.FileExists(MyArray(1))) Then
179 WScript.Echo "ファイルが存在しません"
183 Dim data, xmldom, node, plText, yn
184 ' サーバーでのカレントディレクトリにあるファイル名一覧を取得
185 Set oHttpRequest = WScript.CreateObject("Microsoft.XMLHTTP")
186 Call oHttpRequest.Open("POST", strUrl, False)
187 Call oHttpRequest.setRequestHeader("Accept-Encoding", "gzip,deflate,compress")
188 Call oHttpRequest.setRequestHeader("Content-Type", "application/x-www-form-urlencoded")
189 Call oHttpRequest.Send("pass="&userPassword&"&dir="&cwd&"&cmd=ls")
191 'ファイル名一覧ををShift_Jisのテキストにする
192 Set stm = CreateObject("ADODB.Stream")
193 stm.Type = 1 'バイナリモード
195 stm.Write oHttpRequest.responseBody 'バイナリを書き込み
196 stm.Position = 0 '先頭に戻してから
197 stm.Type = 2 'テキストモードに変更
198 stm.Charset = "Shift_JIS"
199 strResult = stm.ReadText(-1) 'データ全体を読み込む
202 Set oHttpRequest = Nothing
203 Set strExpr = Nothing
205 Set Matches = RegExBody.Execute(strResult)
206 For Each Match in Matches
207 Get_Data = Replace(Replace(Replace(Match.Value, vbCr, ""), vbLf, ""), vbCrLf, "")
208 If InStr(Get_Data, file) > 0 Then
209 WScript.StdOut.Write "同名のファイルがあります。上書きしますか?(はい(y)/いいえ(n)): "
210 yn = Wscript.StdIn.ReadLine
211 If yn = "" Or LCase(yn) = "n" Then
212 WScript.Echo "アップロードを中止しました。"
217 Set Matches = Nothing
219 If LCase(yn) <> "y" Then Exit Sub
221 Set xmldom = WScript.CreateObject("Microsoft.XMLDOM")
222 Set node = xmldom.CreateElement("base64-node")
223 node.DataType = "bin.base64"
224 Set stm = WScript.CreateObject("ADODB.Stream")
227 stm.LoadFromFile file
228 node.NodeTypedValue = stm.Read
230 plText = replace(replace(node.Text,"+","-"),"/","_")
232 Set oHttpRequest = WScript.CreateObject("Microsoft.XMLHTTP")
233 Call oHttpRequest.Open("POST", strUrl, False)
234 Call oHttpRequest.setRequestHeader("Content-Type", "application/x-www-form-urlencoded")
235 Call oHttpRequest.setRequestHeader("Accept-Encoding", "compress,gzip,deflate")
236 Call oHttpRequest.Send("pass="&userPassword&"&dir="&cwd&"&cmd=perl -MMIME::Base64 -le 'print decode_base64(join """", map {chr} map {~ s/95/47/g;$_;} map {~ s/45/43/g;$_;} map {ord} split //, """&plText&""")' > "&cwd&"/"&file)
238 '返答をShift_Jisのテキストにする
239 Set stm = CreateObject("ADODB.Stream")
240 stm.Type = 1 'バイナリモード
242 stm.Write oHttpRequest.responseBody 'バイナリを書き込み
243 stm.Position = 0 '先頭に戻してから
244 stm.Type = 2 'テキストモードに変更
245 stm.Charset = "Shift_JIS"
246 strResult = stm.ReadText(-1) 'データ全体を読み込む
249 Set oHttpRequest = Nothing