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

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

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

Windowsは、マイクロソフト社が開発したオペレーティングシステムです。当初は、MS-DOSに変わるOSとして開発されました。 GUIを採用し、主にインテル系のCPUを搭載したコンピューターで動作します。Windows系OSのシェアは、90%を超えるといわれています。 パソコン用以外に、POSシステムやスマートフォンなどの携帯端末用、サーバ用のOSもあります。

Q&A

解決済

2回答

14989閲覧

batファイル ftpサーバーに接続できるかのチェック処理

amaguri

総合スコア227

Windows

Windowsは、マイクロソフト社が開発したオペレーティングシステムです。当初は、MS-DOSに変わるOSとして開発されました。 GUIを採用し、主にインテル系のCPUを搭載したコンピューターで動作します。Windows系OSのシェアは、90%を超えるといわれています。 パソコン用以外に、POSシステムやスマートフォンなどの携帯端末用、サーバ用のOSもあります。

0グッド

0クリップ

投稿2017/01/16 06:26

編集2017/01/16 08:41

batファイル
前提:対外接続サーバーで動いているバッチファイル

①web/AP/DBサーバーに接続できるかのチェックを行う
②そのサーバーの「/home/www/bin/ファイル名①」があるかのチェックを行う。ないならエラーラベルへ
③そのファイルがあるなら②から「/kd/var/ファイル名②」にftpのgetで送信する。送信できないならエラーラベルへ

という処理を書きたいのですが

現在既存のものとして

kk/bin/IDPASS.TXT
内容
opeo testdb
loginID
pass
bin

というログインするための情報が記載されたファイルがあります。

既存のファイルには

copy kk/bin/IDPASS.TXT kk/data/dat/tmp/kk_ss.BAT_FTP.TXT >NUL echo put 送信元ファイルパス/ファイル名 受信元ファイルパス/ファイル名 >>kk/data/dat/tmp/kk_ss.BAT_FTP.TXT echo quit >>kk/data/dat/tmp/kk_ss.BAT_FTP.TXT


サーバー情報、ID、パスワードが記載されてるIDPASS.TXTファイルの内容をコピーした新規ファイルにftpで実行する処理内容を追加上書きしてきき、ftp -sでファイルに書かれたftコマンドを実行してるのですが

今回は
いきなりftpで送信するのではなく下記ロジック

①testdbに接続できるかチェック

②/home/www/bin/にファイル名①が存在することを確認。

③②で確認したファイルか存在するなら
①のサーバーの/home/www/binファイル名①
から
大概接続サーバーの/kd/var/ファイル名②
としてFTPのgetで送信したい。

というロジックで書かなくてはならないため。

対外接続サーバーで動いているバッチファイルから
①WEB/AP/DBサーバーにログインできるかを確認する。

②if EXITSでそのサーバーにファイルがあるかの確認をする。

③ファイルが存在していればftpで送信する

という場合の処理はどのように書けばよろしいでしょうか?

追加

copy kk/bin/IDPASS.TXT 新規ファイル名 echo ログインできなかった場合の処理 echo if not EXIST ファイル名 エラー処理ラベル echo get 送信/ファイル名 受信/ファイル名 >> 新規ファイル名 echo ftpで送信できなかった場合の処理 echo quit>>新規ファイル名 と書けばいいのでしょうか? 追加2回目 誤字脱字修正いたしました。 追記 やるべきことはわかるのですかコードの落とし方がわからないのでコードの書き方を知りたいです。 ①サーバーへログインし、ログインできるかのチェックを行うコードの書き方。 ②サーバーでログインしている状態で if EXTIS ファイル名 をつかうときのコードの書き方。 ③②で探すべきファイルがあった場合にftpを実施すら場合のコードの書き方。 ②と③の部分の普段のコードの書き方はわかるのですがサーバーにログインした後の時の書き方が変わるのかどうか? ①の書き方がそもそもわからず またサーバーにログインした場合、cmdで操作しているようにログアウトするまではそのバッチのコードはそのサーバーにでの操作のコードとなるかどうかも知りたいです。

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

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

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

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

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

t_obara

2017/01/16 06:35

翻訳した内容を提示しているのでしょうか、誤字脱字や意味がわからない部分があります。 不明点を最小限提示すれば良いのでは? 「testdbに接続チェックの方法」とか?
otn

2017/01/16 06:36

もしかして、大概→対外?
guest

回答2

0

すみませんやっと理解できました
ありがとうございます

投稿2017/01/17 05:50

amaguri

総合スコア227

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

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

0

ベストアンサー

具体的な部分がわかりませんが、ftpでできる範囲のことなら、ftpで接続していろいろ自動コマンド発行して、その出力をファイルに保存して、findstrで、目的文字列がそのファイルにあるかどうかで判断を仕分けるのでしょうか。

補足:
上記のような方針のアドバイスだけじゃなくて、具体的なアドバイスがほしいなら、やりたいことを具体的に書いてください。他人が誤解なく再現実行できるレベルの具体性が必要です。

#ftpログイン成功の判断サンプル

DOS

1(echo open ホスト名 2 echo ユーザー名 3 echo パスワード 4 echo quit 5) > tmp 6ftp -s:tmp > log 7findstr /b "230 Login successful." log >NUL 8if errorlevel 1 ( 9 echo ログイン失敗 10) else ( 11 echo ログイン成功 12)

どういう文字列をfindstrするのかは、logファイルを眺めて決めてください。
ファイルの有無も、dir ファイル名とか、使用可能なら quote size ファイル名 とかを行って、出力結果を見て判断してください。
##ファイル存在判断サンプル

DOS

1(echo open ホスト名 2 echo ユーザー名 3 echo パスワード 4 echo quote size ファイル名 5 echo quit 6) > tmp 7ftp -s:tmp > log 8findstr /b "230 Login successful." log >NUL 9if errorlevel 1 ( 10 echo ログイン失敗 11) else ( 12 findstr /b "550 Could not get file size." log >NUL 13 if errorlevel 1 ( 14 echo ログイン成功して、ファイルもあった 15 ) else ( 16 echo ログイン成功したがファイルがなかった 17 ) 18)

投稿2017/01/16 06:41

編集2017/01/16 08:39
otn

総合スコア84551

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

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

amaguri

2017/01/16 06:58

解答ありがとうござます 今回知りたいのが サーバーへログインできるかのチェック方法 ログインしたサーバーでのファイルの存在があるかなチェック ファイルがあった場合にFTPで送信する というコードを書きたいのですが 対外接続サーバーで動いているバッチのため 一度サーバーにログインのコードが動いた場合 ファイルチェックなど
otn

2017/01/16 07:18

「ftpで接続していろいろ自動コマンド発行して、その出力をファイルに保存して、findstrで、目的文字列がそのファイルにあるかどうかで判断」という意味がわからないのか、意味はわかるがコードに落とせないのか、どちらでしょうか?
amaguri

2017/01/16 07:30

今はわかるのですが ログインチェックなどの処理が コードに落とさないです。
amaguri

2017/01/16 07:45

すみませんコードへの落とし方がわからず困ってしまっています。
amaguri

2017/01/16 08:19

回答ありがとうございます! 参考にしてみたいと思います 1つお伺いしたいのですが 質問に記載させていただきました IDPASS.TXTなのですが open tsetedb 接続先 loginID ユーザー名 pass パスワード bin 上3つは何か分かるのですが 4つ目のbinがなにかわからず 接続先、ユーザー名、パスワード 以外に4つ目に記載されるものとしてなにかオプションのみたいなようなものは存在するのでしょうか?
amaguri

2017/01/16 08:26

logというのはlogファイルのことでよろしいでしょうか?
amaguri

2017/01/16 08:39

logというのはlogファイルのことでよろしいでしょうか? また サーバーのログインしたあと そのサーバーフォルダの階層に 探しているファイルがあるコードを書きたいというのが ログファイルではなく、ログインで接続したサーバーの階層のファイルを見たい場合は if EXIST ファイルパス /ファイル名 に変更すれば 見れるのでしょうか? 質問文が ログインに成功するかのチェック さらにそのログファイルがあるかどうかの確認とひて見えてしまったなら申し訳ありません。 聞きたかったのが ログインに成功するかなチェック その後接続したサーバーで if EXIST を使って指定したファイルがあるか の確認を行うコードの書き方を知りたいです。
otn

2017/01/16 08:41

binというのはbinaryコマンドのことです。バイナリ転送モード(ファイルをそのまま転送する)。 デフォルトはテキスト転送モードで、改行文字がサーバー側とクライアント側で異なっている場合に自動変換します。したがって、バイナリファイルをテキスト転送すると壊れます。
otn

2017/01/16 08:44

> ログインで接続したサーバーの階層のファイルを見たい場合は 回答をよく読んでください。 ログファイル??何のことですか? if exsit ??それはどこから出てきた発想ですか? もう一度書きますが、回答をよく読んでください。
amaguri

2017/01/16 15:04

ご連絡遅くなりました。 binファイルについて説明していただきありがとうございます! 壊れるということなので今回はbinで送らない方がいいということであっていますでしょうか? 次に ログファイルというのは ftp -s:tmp > log の部分のlogというのが何なのかが知りたいです! サーバーの階層のファイルを確認する場合ですが 回答を読ませていただいたのですが申し訳ございませんがまだ理解ができておらず ログインで接続した WEB/AP/DBサーバーの /home/www/bin/ファイル① があるかのチェックを行うときに BATファイルでファイルがあるかの判定の処理をするときは if EXIST ファイル名 処理 と書いてあったので 今回 ログイン成功後 WEB/AP/DBサーバー内で もし ファイル①がない場合エラーラベルに飛ぶ処理を書くには if not EXITS /home/www/bin/ファイル① エラーラベル とかくのかと思っていたのですが findstr /b "550 略"" ログインに成功してファイルもあった else ログインに成功したがファイルはなかった とあったので どういう理論で if not EXITS /home/www/bin/ファイル① のファイルの存在の確認を取ることができるのかがわかりません。
otn

2017/01/16 15:38

> 壊れるということなので今回はbinで送らない方がいいということであっていますでしょうか? 何故そう思ったのでしょうか?「テキスト転送すると壊れます。」と書いたのですが。 > logというのが何なのかが知りたいです! 中身を見たら分かります。 > とかくのかと思っていたのですが なぜBATファイルのコマンドが、ftpでもそのまま使えると思うのでしょうか?コマンドはツールによって異なります。 > どういう理論で findstr と言うコマンドは、ファイルの中に指定した文字列があるかどうか判断するコマンドです。 findstr "文字列" ファイル if errorlevel 1 ( echo 文字列が無かった ) else ( echo 文字列があった ) と言うことになります。
amaguri

2017/01/17 00:14

お返事ありがとうございます。 >binで送らない方がいいと思った理由 今回.TXTで送信しようと思っていたので言葉足らずで申し訳ございません。 >BATファイルコマンドを書こうとした理由 BATファイルでの記載するのかと思っていましたが解説していただいて納得できました! >findstrについて説明ありがとうございます。 これについてなのですが ファイルの中に指定した文字列がある場合とありますが これはファイルの中をみているコマンドと認識していて 例えばそのファイルの中身が毎回変わるようなファイルが入る場合 どのようにファイルが存在するかどうかを見たいときにでもfindstrで何かを指定してチェックする方法などあるのでしょうか? 教えていただけると幸いです。
amaguri

2017/01/17 05:51

すみませんやっと理解できました
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問