データのダウンロードにてNo.00192
woods さん 99/05/12 21:15
 
秀termのスクリプトにて、電話して、ログインして、ファイルをダウンロードして、
回線切断後、秀term終了というスクリプトを書いて、スケジューラーにて時刻指定し

ファイルのダウンロードを自動化しています。

ところが、この間留守中に1日中電話していたようなのです。
通信回数は1回なのですが、通話時間が16時間ととんでもないのです。

通常1回の処理は3分位で終わるのですが、何故かこのときは16時間もかかってるので
す。
こんなことが今月に入って数回ありました。
データのダウンロード中に、回線異常等が起こって切断された場合は、最初から電話
し直すように
しているのですが、このときの通信回数は1回なのす。リダイアルもせずに16時間も
いったい何をしていたのでしょう?

心当たりがある方教えてください。
またうまい対処法があるでしょうか?

[ ]
RE:00192 データのダウンロードにてNo.00193
かずや さん 99/05/14 00:13
 
>データのダウンロード中に、回線異常等が起こって切断された場合は、最初から電話
>し直すように
>しているのですが、このときの通信回数は1回なのす。リダイアルもせずに16時間も
>いったい何をしていたのでしょう?
>
>心当たりがある方教えてください。
>またうまい対処法があるでしょうか?

ログを解析してみないと、はっきりしたことは言えませんが
たぶん、waitや switchで 予期していた文字列を
受信しなかったのが原因じゃないかと思います

タイムアウトは設定していますか?


[ ]
RE:00193 データのダウンロードにてNo.00194
woods さん 99/05/14 21:25
 
>>データのダウンロード中に、回線異常等が起こって切断された場合は、最初から電話
>>し直すように
>>しているのですが、このときの通信回数は1回なのす。リダイアルもせずに16時間も
>>いったい何をしていたのでしょう?
>>
>>心当たりがある方教えてください。
>>またうまい対処法があるでしょうか?

>ログを解析してみないと、はっきりしたことは言えませんが
>たぶん、waitや switchで 予期していた文字列を
>受信しなかったのが原因じゃないかと思います

>タイムアウトは設定していますか?

タイムアウトは設定していません。
って言うより、どのようなときに道設定すればよいのでしょうか?

ダウンロードがうまく行かず、リトライを繰り返してるって状態なのでしょうか?

それから、NTTの通話明細と秀termの通話時間が合致しないのです。
NTTの明細では、11時30分から通話時間16時間30分となっているのですが。
秀termのphone.txtでは、11:30分から16:57分となっているのです。
秀termで通信中に日付をまたぐとこのようなことが起るのでしょうか?

[ ]
RE:00194 データのダウンロードにてNo.00195
かずや さん 99/05/15 00:18
 
こんちわ(*^-^)/

>タイムアウトは設定していません。
>って言うより、どのようなときに道設定すればよいのでしょうか?
wait文やswitch文などで使います
例)loopswitch文で使った例
 timeout 120    ;タイムアウトを2分に設定
 loopswitch
 case "ユーザID:"
  send "ABC12345^M"
 case "お疲れさまでした^M"
  hangup
 case timeout
  message "タイムアウトが発生しました"
 endloop

>ダウンロードがうまく行かず、リトライを繰り返してるって状態なのでしょうか?
リトライの場合は、切断して最初からやり直すんですよね?
そうしているなら、リトライで通話時間が連続して16時間も
ならないと思います

>秀termで通信中に日付をまたぐとこのようなことが起るのでしょうか?
そのようなバグは聞いたことがないので
まず、それはないと思います

>NTTの明細では、11時30分から通話時間16時間30分となっているのですが
>秀termのphone.txtでは、11:30分から16:57分となっているのです。
切断が失敗したか・・・(?)(^-^;
TELNETだと、秀Termの接続は切れても
回線はつながっている、というのが考えられますが・・・
接続の設定はどうなっていますか?

あと、終了後にパソも終了していいのなら
afterhangup文でパソの電源を切るソフトを
起動してしまう、という手もあります(^-^;

でも、原因が分からないからなあ・・・(^-^;

[ ]
RE:00195 データのダウンロードにてNo.00196
かずや さん 99/05/15 00:24
 
タイムアウトの説明で 後処理を忘れていました(^-^;

タイムアウトを使い終わったら必ず解除しましょう
>> timeout 0

そうしないと、以後、wait文やswitch文ですべて
タイムアウトが有効になってしまいます
(あ、別のラベルに飛ぶ場合は別だっけ?・・・(^-^;)

それから、loopswitch文でタイムアウトになったからって
ループから勝手に抜けてくれるわけではありません(^-^;
ループから抜けるときは breakloopです

[ ]
RE:00195 データのダウンロードにてNo.00197
woods さん 99/05/17 12:13
 
こんちわ

wait文やswitch文を使用していません。
timeoutは使用しなくてもいいですよねぇ。

>>ダウンロードがうまく行かず、リトライを繰り返してるって状態なのでしょうか?

>リトライの場合は、切断して最初からやり直すんですよね?
>そうしているなら、リトライで通話時間が連続して16時間もならないと思います。

エラーが発生した場合、erroelog.txtを書き込んで、errorlog.txtが存在すれば
リダイアルするようにしています。

ダウンロードのリトライってのは、考えられないでしょうか?
ダウンロード中のポップアップにリトライ回数ってのが、あると思うのです
が・・・・。

>切断が失敗したか・・・(?)(^-^;
>TELNETだと、秀Termの接続は切れても回線はつながっている、というのが考
えられますが・・・
>接続の設定はどうなっていますか?

telnet接続じゃないんですが、回線の切断が失敗した場合、再度切断処理をするなん
てこと可能でしょうか?
それか、通信開始から総時間を指定して、指定時間が来ると回線を切るようなことが
できないのでしょうか?

>あと、終了後にパソも終了していいのなら
>afterhangup文でパソの電源を切るソフトを起動してしまう、という手もあります(^
-^;

Windowsを終了させてからでないと、電源を落とすのはやばいでしょうー。

>でも、原因が分からないからなあ・・・(^-^;

なぞなのですぅー。

[ ]
RE:00196 データのダウンロードにてNo.00198
woods さん 99/05/17 18:45
 
downloadにて、ダウンロードが成功すると終了コードはyesになり、
失敗した場合または中断された場合はnoになります。という風にヘルプに書いている
のですが、
例えば、終了コードをひらって、noの場合再度ダウンロードする、yesの場合は次ぎ
の処理へってな事が
できると思うのですが、終了コードってどうやって拾らえばよいのでしょう?

ダウンロードしたファイルを見てみると、通信時間が異常にかかったときは、
ファイルのサイズが正常にダウンロードできたときの半分サイズでした。

ダウンロードがうまくいっていないのはわかったのですが、なんで16時間も繋ぎっぱ
なしだったのかわかりません。

[ ]
RE:00198 データのダウンロードにてNo.00199
秀まるお さん 99/05/20 19:34
 
 終了コードは、単純に

    if( no )
         ...noの場合の処理...
    endif

 みたいに書けばいいと思います。

 (オンラインで書いてるので簡単なレスですみません)


[ ]
RE:00198 データのダウンロードにてNo.00201
かずや さん 99/05/22 23:51
 
こんちわ(*^-^)/

>終了コードってどうやって拾らえばよいのでしょう?
秀まるおさんがRESされてますが補足です
 >if (no)
 > (noの処理)
 >endif
これを省略しないで書くと
 if (result == no)
  (noの処理)
 endif
という風になりますつまり終了コードは resultです
(resultを省略できるのは YES/NO/ENTER/CANCELだけ)
終了コードを求める式を使うと、上書きされます
(wait,switch,menu,questionなど...)
従って、書き換えられる前に(早めに)処理した方がいいと思います

>ダウンロードがうまくいっていないのはわかったのですが
>なんで16時間も繋ぎっぱ>なしだったのかわかりません。
実際にエラーが出たときの状況を見て解決された方が良いと思いますが
ダウンロードが失敗した場合は、無意味な文字列がバッファに出力されます
(ちなみに、σ(^-^)はPC−VANしか知りません。
 使用しているプロトコルはQuick−Van)
バッファを全部出力しないと次の処理に移らない(と思う(^-^;)ので
このときに、何らの原因で秀Termが強制終了してしまっているのかも知れません

>telnet接続じゃないんですが、回線の切断が失敗した場合
>再度切断処理をするなんてこと可能でしょうか?
終了コード・・・使えるのかな?(^-^;
使えたら可能(笑)

>それか、通信開始から総時間を指定して、指定時間が来ると
>回線を切るようなことができないのでしょうか?
普通はできません が
各処理の開始、処理中、終了時に接続時間を取得して
処理すれば擬似的に可能(?)

>Windowsを終了させてからでないと、電源を落とすのはやばいでしょうー。
説明不足でした(^-^;
電源を切るというのは強制終了ではありません(^-^;
WIN終了時の「コンピュータの電源を切る準備ができました」という
画面にすることです
コマンドラインで、起動すると終了してくれるオンラインソフトが
いっぱいあると思います
ちゃんとしたソフトを使うと安全に終了させてくれます
(高機能なソフトになると、電源自体を落としてくれるのもある)
WINが終了すると勝手に回線も切ってくれるので
ずっとつながってるという心配がないと思います

でも、秀Termがエラー終了してるんじゃ、使えないか・・・(^-^;
別のソフト使って、タイマーしておく手もあるかな・・・

[ ]