質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
FTP

FTP(File Transfer Protocol)は、ネットワークでのファイル転送を行うための通信プロトコルの1つである。

PowerShell

Windows PowerShellはコマンドラインインターフェースであり、システム管理を含むWindowsタスク自動化のためのスクリプト言語です。

proxy

proxy(プロキシー)は、企業などの内部コンピュータとインターネットの中間に位置し、例えば直接インターネットに接続できない内部コンピュータの代理としてインターネットに接続する等をするシステム、もしくは代理として機能を実行するソフトウェアです。内部ネットワークへのアクセスを一元管理し、内部からの特定の種類の接続以外を遮断すること、外部からの不正アクセスを拒否することなどに用いられます。

Q&A

1回答

2274閲覧

Powershellで社外FTPサーバーからProxy経由でファイルダウンロード

kou62621

総合スコア7

FTP

FTP(File Transfer Protocol)は、ネットワークでのファイル転送を行うための通信プロトコルの1つである。

PowerShell

Windows PowerShellはコマンドラインインターフェースであり、システム管理を含むWindowsタスク自動化のためのスクリプト言語です。

proxy

proxy(プロキシー)は、企業などの内部コンピュータとインターネットの中間に位置し、例えば直接インターネットに接続できない内部コンピュータの代理としてインターネットに接続する等をするシステム、もしくは代理として機能を実行するソフトウェアです。内部ネットワークへのアクセスを一元管理し、内部からの特定の種類の接続以外を遮断すること、外部からの不正アクセスを拒否することなどに用いられます。

0グッド

0クリップ

投稿2017/10/03 09:04

###前提・実現したいこと

社外FTPサーバーから社内のProxyを経由して、社外サーバーにある特定のフォルダ内のファイルの内、最新のファイルのみを社内PCに保存するバッチをPoweshellで作成しています。
社外FTPサーバーのホスト名はAAA.com ユーザー名、PassはBBB,CCCとします。
また、Proxyホストはproxy.DDD.co.jp、Proxy認証のログインIDはEEE、PassはFFFとします。

様々なサイトで調べた結果、なかなか類似のコードが見つかりません。
どのようにPowershellで記述したらいいか教えていただけると幸いです。

###発生している問題・エラーメッセージ
WindowsShellからFTPを起動するバッチを作成し、その中でFTPコマンドが記述してあるテキストファイルでダウンロードもできるのですが、FTPコマンドではファイルの選択ができません。

エラーメッセージ

###該当のソースコード

ここにご自身が実行したソースコードを書いてください

###試したこと
課題に対してアプローチしたことを記載してください

###補足情報(言語/FW/ツール等のバージョンなど)
より詳細な情報

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

FTPでのファイルの一覧を取得する部分と、目的のファイルをダウンロードする部分を分ければ実装可能かと思います。
ファイル一覧から最新のファイルを抽出するのはPowerShellで行います。


追記:
ファイルのダウンロードに Invoke-WebRequest コマンドレットを使用されているかもしれませんので、
WebClientを使用した場合の参考URLを追記します。

投稿2017/10/03 22:20

編集2017/10/05 05:02
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kou62621

2017/10/05 04:32 編集

suyama さん、ご回答ありがとうございます。 Powershellでファイル一覧から最新のファイルをダウンロードする部分はかけそうなのですが、ProxyからFTPサーバへID、Passを用いてアクセスする部分がわかりません。 具体的なコードを、簡単でいいので書いていただけると非常に助かります。。。 また、suyama様のおっしゃるFTPでのファイルの一覧を取得する部分とは、Powershellのスクリプト内でのことでしょうか?
退会済みユーザー

退会済みユーザー

2017/10/05 04:36

「ファイル一覧から最新のファイルをダウンロードする部分」をFTPを用いて実現できているのであれば、get を ls 等にするだけのように思います。 部分的でもよいので作成中のコードを質問欄に記載頂けませんか。
kou62621

2017/10/05 05:21

Powershellでなく.batなのですが、 "runftpbat.bat"内 ftp -s:runftpbat.txt "ログインに必要なtxt読み込み" "runftpbat.txt"内 open proxy.”社内Proxy名”.co.jp "FTPサーバUser名"@"FTPサーバ.com" "ProxyID" "ProxyPass" pwd lcd XXXX (ローカル側のディレクトリ変更) cd YYYY(リモート側のディレクトリ変更) get *.AAA (YYYY内にある、拡張子AAAを全てダウンロード) これを走らせると確かにFTPサーバから.AAAを全てダウンロードできるのですが、最新のファイルだけ選んでダウンロードできない(そんなFTPコマンドはない?)ので、Powershellでやってみようとした次第です。 誤解が生じましたらすみません、Powershellはこれから書こうかと思っているところです。
kou62621

2017/10/05 05:27

追記;いただいたURLの回答を見るとFTPに接続するIDとPassのみ記述してWebClientを用いているようですが、ここにProxyを通り抜けることが必要になった場合の記述がわからないです。。。
kou62621

2017/10/05 08:18

追記2;下記のように、まずftpサーバ内にあるtest.aaaをローカルに保存するps1ファイルを作成し、まわしてみましたが、(2個の引数を指定して”DownloadFile”を呼び出し中に例外が発生しました:”WebClient要求で例外が発生しました”)のエラーがでました。コメントいただけたら幸いです。 $ftpurl = "ftp://AAA.com" $ftpuser = "BBB" $ftppass = "CCC" $proxyid = "DDD" $proxypass = "EEE" #DL対象ファイルの場所 $target_url = "ftp://test/test.aaa" #ローカルでの保存先 $file_path = "C:\test" #WebClientとWebProxyのObject作成,Credential $wc = New-Object System.Net.WebClient $wc.Credentials = New-Object System.Net.NetworkCredential($ftpuser, $ftppass) $wc.BaseAddress = $ftpurl $wp = New-Object System.Net.WebProxy("http://proxy.XXX.co.jp:21",$true) $wp.Credentials = New-Object System.Net.NetworkCredential($proxyid, $proxypass) $wc.Proxy = $wp #ファイルのダウンロード $wc.DownloadFile($target_url, $filepath)
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問