Windowsのダイヤルアップ接続の際のスクリプト実行について、お伺いします。


Windowsのダイヤルアップ接続の際に、スクリプトを実行しています。
回線接続後、回線接続した相手側とのデータのやり取りの結果により、スクリプトの実行を途中で停止し、
更に、その後の接続処理(PPP接続処理)を停止(キャンセル)することは可能でしょうか?

その手順を教えてください。

<現在までに試した結果>
相手側とのデータが指定するものであった場合、HALTする。
→スクリプトが途中で終っただけで、接続処理は続行された。

不可能であるなら回答は不要です。可能である場合、
その手順(スクリプト(*.scpファイル)の記述法?)を教えてください。

回答の条件
  • URL必須
  • 1人3回まで
  • 登録:
  • 終了:2010/01/05 09:25:54
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:mystashes No.1

回答回数32ベストアンサー獲得回数11

ポイント80pt

手元に実環境が無い為、過去の実績と検索に頼った回答となります。

あまり綺麗なやり方ではありませんが、モデム側で回線を切ってやれば中断は可能です。

1)モデムがコマンドモードであれば、モデムに回線切断要求を送ってやります。

~~~~~
既存の処理
~~~~~

AbortConnect:
transmit "ATH^M"
waitfor "OK"
halt
goto Done

~~~~~
既存の処理
~~~~~

Done:
endproc

2)モデムがコマンドモードでない場合、コマンドモードにしてから切断要求を送ってやります。

※コマンドモードへの移行受付を10秒間・3回待つようにしていますが、この値はご自身の環境に応じて変更してください。

integer nTimeOut = 10
integer nRetryCmd = 3

~~~~~
既存の処理
~~~~~

AbortConnect:
while 0 < nRetryCmd do
  transmit "+++"
  delay 2
  waitfor "OK" then HangLine
          until nTimeOut
endwhile

HangLine:
transmit "ATH^M"
waitfor "OK"
halt
goto Done

~~~~~
既存の処理
~~~~~

Done:
endproc

※一般的なATコマンドで記述していますが、念のためお使いの機器(モデム)のATコマンド一覧を御確認ください。

また、うまく動作しない場合はターミナルから手動でコマンドを入力して試してみてください。

  • ご参考

http://technet.microsoft.com/en-us/library/cc751039.aspx

http://www.slayers.ne.jp/~oouchi/pc_unix/callback.html

http://www.cyborg.ne.jp/~support/dialup/nt40/winnt40.html

id:futurista

回答有難うございます。参考になります。

トリッキーですが、全然、よいと思います。

ATコマンドで直接、制御できるとは知らなかったので、「切る」という発想はありませんでした。

確かに、

『接続処理(PPP接続処理)を停止(キャンセル)する』

場合は、回線自体を切断することで問題ありません。

現在、手元に環境がないため、確認次第、報告させて頂きます。

(コメント欄に結果を報告致します。)

但し、

回線接続した相手側とのデータのやり取りの結果により、

「意図的に切断したのか?」

それとも

「通信障害により切断してしまったのか?」

の判定ができればもっとよいのですが。。

最初に記載しておければよかったのですが、、、

スクリプトは、RasDial(電話帳)を用いて、プログラム上から実行する予定なのです。

2009/12/30 08:42:35

その他の回答1件)

id:mystashes No.1

回答回数32ベストアンサー獲得回数11ここでベストアンサー

ポイント80pt

手元に実環境が無い為、過去の実績と検索に頼った回答となります。

あまり綺麗なやり方ではありませんが、モデム側で回線を切ってやれば中断は可能です。

1)モデムがコマンドモードであれば、モデムに回線切断要求を送ってやります。

~~~~~
既存の処理
~~~~~

AbortConnect:
transmit "ATH^M"
waitfor "OK"
halt
goto Done

~~~~~
既存の処理
~~~~~

Done:
endproc

2)モデムがコマンドモードでない場合、コマンドモードにしてから切断要求を送ってやります。

※コマンドモードへの移行受付を10秒間・3回待つようにしていますが、この値はご自身の環境に応じて変更してください。

integer nTimeOut = 10
integer nRetryCmd = 3

~~~~~
既存の処理
~~~~~

AbortConnect:
while 0 < nRetryCmd do
  transmit "+++"
  delay 2
  waitfor "OK" then HangLine
          until nTimeOut
endwhile

HangLine:
transmit "ATH^M"
waitfor "OK"
halt
goto Done

~~~~~
既存の処理
~~~~~

Done:
endproc

※一般的なATコマンドで記述していますが、念のためお使いの機器(モデム)のATコマンド一覧を御確認ください。

また、うまく動作しない場合はターミナルから手動でコマンドを入力して試してみてください。

  • ご参考

http://technet.microsoft.com/en-us/library/cc751039.aspx

http://www.slayers.ne.jp/~oouchi/pc_unix/callback.html

http://www.cyborg.ne.jp/~support/dialup/nt40/winnt40.html

id:futurista

回答有難うございます。参考になります。

トリッキーですが、全然、よいと思います。

ATコマンドで直接、制御できるとは知らなかったので、「切る」という発想はありませんでした。

確かに、

『接続処理(PPP接続処理)を停止(キャンセル)する』

場合は、回線自体を切断することで問題ありません。

現在、手元に環境がないため、確認次第、報告させて頂きます。

(コメント欄に結果を報告致します。)

但し、

回線接続した相手側とのデータのやり取りの結果により、

「意図的に切断したのか?」

それとも

「通信障害により切断してしまったのか?」

の判定ができればもっとよいのですが。。

最初に記載しておければよかったのですが、、、

スクリプトは、RasDial(電話帳)を用いて、プログラム上から実行する予定なのです。

2009/12/30 08:42:35
id:km1967 No.2

回答回数541ベストアンサー獲得回数40

ポイント1pt

まずはお願いなのですが、

お使いのパソコンのOSやスクリプト言語など、

何も判らないと回答は難しくなりますので、必須だとご記憶ください。

不適当な回答が集まっても混乱をきたしますから、私への返信欄か、

あるいは、コメント欄を開く設定に変更してコメント欄)に、

書き加えておくことを勧めます。

http://q.hatena.ne.jp/

id:futurista

実は玉子焼きより、目玉焼きの方が好きなんで、、ちょっと無理ですね。

すいません。

2009/12/30 08:43:03
  • id:mystashes
    仰る通り呼び出し側からは障害なのか、スクリプト側で意図して切断したのかが判らないのが問題です。
    恐らくエラービットが立った状態でコールバック関数に返ってきてしまうはずです。
    呼び出し側でRASCONNSTATEの値を見て判断できるような作りが望ましいとは思いますが...
    正直今環境が無い為、ちょっとチャレンジできません。申し訳ありません。
    情報収集レベルでお役に立ちそうな内容があれば、追加でご提供させて頂きます。

  • id:futurista
    >>mystashesさん

    早速のコメント有難うございます。

    ご指摘頂いたように、RASCONNSTATE...というか、dwErrorでエラー種別を、
    もしくは、状態(RASCONNSTATE)とエラー情報両方を確認すれば、

    「障害」or「スクリプト側で意図して切断」

    が判定できそうな気がします。

    http://technet.microsoft.com/ja-jp/library/cc773153(WS.10).aspx
    http://support.microsoft.com/kb/163111/ja
    http://billmccarthy.com/Projects/Archived/PlatformVB/dun/rasconstate.htm


    現在、環境がなく試していない状況ですが、(冬休みなので。。)
    明けたらすぐにでも、試験してみたいと思います。

    毎度毎度、回答有難うございます。
    今後ともよろしくお願いします。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません