home *** CD-ROM | disk | FTP | other *** search
/ DOS/V Power Report 1998 September / VPR9809A.ISO / FWINDOWS / ntm2191 / ntm2191.lzh / SCRIPT.TXT < prev    next >
Text File  |  1998-05-30  |  13KB  |  403 lines

  1. NifTerm ログインスクリプト仕様 1997/04/10 (C) Daytime
  2.  
  3. 1.目的
  4.     NifTerm のログインスクリプトは、NifTerm内蔵スクリプトで対応してるもの以外
  5.  の経路でNIFTY-Serve につなぎ NifTerm を使いたい、というご要望に応えるための
  6.  機能です。NifTerm の基本機能を拡張することを目的としていません。
  7.  
  8.  注意:通信条件はノーパリティ/8ビット/1ストップビットに限られます。この条
  9.  件で接続できないネットは経由できません。
  10.  
  11. 2.ログインスクリプトの内容
  12.     ログインスクリプトでは以下の部分を1個のファイルに記述します。
  13.     ・モデムから「CONNECT」が返った後、ホストから「Enter Connection-ID」が返る
  14.       までの間(ログイン部分)
  15.     ・ホストに「BYE」を送ったあと、回線切断までの間(ログアウト部分)
  16.  
  17. 3.スクリプトファイルの作成
  18.     スクリプトファイルはシフトJIS のテキストファイルです。拡張子はLSC です。任
  19.   意のテキストエディタで作成することができます。
  20.  
  21.  ご注意:エディタによっては、「名前をつけて保存」するとき指定したファイル名のう
  22.  しろに強制的に.TXTをつけて.LSC.TXTのような名前にしてしまうものがあります。エク
  23.  スプローラで拡張子を隠さないように設定してファイル名を確認の上、.LSC.TXTになっ
  24.  ていたら、.LSCにリネームしてください。
  25.  
  26. 4.スクリプトファイルの使用
  27.     スクリプトファイルを使用するには、次の手順で指定します。
  28.  
  29.     ・スクリプトファイルをNifTerm のデータ(SETTING.DATなど)と同じディレクトリ
  30.       に置きます。
  31.     ・アクセスポイントの追加時に、ディレクトリにある拡張子「.LSC」を持つファイ
  32.       ル名が「スクリプト」の欄に候補として表示※されるので、これを選びます。
  33.    ※スクリプトの欄ではファイル名の頭に外付けのスクリプトであることを示す
  34.    *がつきます。
  35.  
  36. 5.スクリプトファイルの構成
  37.     小文字、大文字は区別されます。
  38.     全角文字は、文字列とコメントの中にのみ使用できます。
  39.   全角スペースを文字列、コメント以外のところに書いてしまわないようご注意くだ
  40.   さい。
  41.  
  42.   ・ラベル
  43.     ラベルは、スクリプトファイルの入り口、goto 文の飛び先を示すために使います。
  44.     ラベルには、A-Z、a-z、0-9、_(下線)が使えます。
  45.     ラベルを定義するには、行のはじめに「:」を置き、その後にラベルを続けます。
  46.     例
  47.     :login
  48.  
  49.   ・loginラベルとlogoutラベル
  50.     ログイン部分とログアウト部分の始まりを記述します。これらのラベルは必須です。
  51.  
  52.   ・コメント
  53.     行の「//」以降はコメントとして扱われます。コメントは実行時に無視されます。
  54.  
  55.   ・文字列
  56.     いくつかの命令は文字列をパラメータとして使用します。文字列は「"」で囲みま
  57.     す。文字列中には以下の特殊文字が使用できます。
  58.         \b      バックスペース
  59.         \n      ラインフィード
  60.         \r      キャリッジリターン(Enterキー)
  61.         \t      水平タブ(Tabキー)
  62.         \v      垂直タブ
  63.         \'      文字「'」
  64.         \"      文字「"」(「""」でも同じです)
  65.         \\      文字「\」
  66.         \ooo    ooo は8進数3桁で文字コードを指定
  67.         \xhh    hh は16進数2桁で文字コードを指定
  68.  
  69.   ・命令
  70.     命令は1行にひとつだけ記述する必要があります。複数行にまたがる命令は不可で
  71.   す。
  72.  
  73. 6.命令
  74. (1)trace 命令
  75.     書式    trace on|off
  76.     例      trace on
  77.  
  78.     onでトレースを始めます。off で終わらせます。
  79.     トレース中は、実行したスクリプトの行番号を「scripttr.txt」というファイルに
  80.     出力します。スクリプトのデバッグに使用します。
  81.  
  82. (2)send 命令
  83.     書式    send 文字列
  84.     例      send "OFF\r"
  85.  
  86.     文字列を送信します。改行は「\r」と記述します。
  87.  
  88. (3)sendx 命令
  89.     書式    send 文字列
  90.     例      send "OFF\r"
  91.  
  92.     telnet接続時、文字列を強制送信します。改行は「\r」と記述します。
  93.  
  94.     telnet接続で、最初に何か改行などを送らないと通信がはじまらないサーバを経由
  95.   する場合、sendでうまく送れないときはsendxを使ってみてください。
  96.  
  97. (4)goto 命令
  98.     書式    goto ラベル
  99.     例      goto label1
  100.  
  101.     ラベルのついた行に飛びます。
  102.  
  103. (5)end 命令
  104.     書式    end
  105.  
  106.     スクリプトの実行を終了します。
  107.     ログイン部分であれば、NifTerm の通常のオートパイロットに制御が移ります。
  108.     ログアウト部分であれば、オートパイロットを終了します。
  109.  
  110. (6)abort 命令
  111.     書式    abort 文字列
  112.  
  113.     スクリプトの実行を異常終了します。
  114.     NifTerm はオートパイロットを終了し、文字列をエラーログに表示します。
  115.  
  116. (7)disconnect命令
  117.     書式    disconnect
  118.  
  119.     回線を切断します。
  120.  
  121. (8)wait 命令
  122.     書式    wait 条件 [and 条件...] [goto ラベル]
  123.     例      wait left=="COM\r"
  124.  
  125.     条件が満たされたとき、ラベルで指定された命令(ないときは次の命令、次の命
  126.   令がor命令の時はさらにその次)に移ります。
  127.     それまで先には進みません。
  128.     or 命令により、複数の条件を待つことができます。
  129.  
  130.     条件には以下のものがあります。
  131.  
  132.     left==文字列
  133.     受信した行の左端が文字列と一致したとき条件が満たされます。
  134.  
  135.     right==文字列
  136.     受信した行の右端が文字列と一致したとき条件が満たされます。
  137.  
  138.     mid==文字列
  139.     受信した行が文字列を含むとき条件が満たされます。
  140.  
  141.     exact==文字列
  142.     受信した行が文字列と完全に一致したとき条件が満たされます。
  143.  
  144.     elapsed 時間
  145.     wait文に入ってから、指定時間が経過したとき条件が満たされます。時間はミリ秒
  146.     で指定します(1000 = 1秒)
  147.  
  148. (9)or 命令
  149.     書式    or 条件 [and 条件...] [goto ラベル]
  150.  
  151.     wait命令の代替条件を指定します。wait命令の直後または、or 命令の直後にしか
  152.     置けません。
  153.     wait命令の後に1個または複数のor命令を置くと、一連のwait命令または、or命令
  154.     のいずれかの条件が満たされるまで待つようにできます。
  155.  
  156.     条件はwait 命令と同じです。
  157.  
  158.     例:
  159.       wait left=="COM"
  160.         or left=="Clear" goto retry
  161.         or elapsed 10000 goto error
  162.  
  163.       "COM" で始まる行が受信されると、or の次の行に、
  164.       "Clear" で始まる行が受信されると、「:retry」の行に、
  165.       どちらも受信されないまま10秒経つと、「:error」の行に飛びます。
  166.  
  167. (10)timeout 命令 (この機能はNifTerm 2.0から対応です)
  168.   書式  timeout 秒数
  169.   例   timeout 60      // 60秒でログイン・ログアウトできない場合はエラー
  170.  
  171.   スクリプトの実行を開始してから完了(end命令を実行)するまでの許容時間を指定
  172.   します。この時間内にスクリプトの実行を完了しない場合はタイムアウトとしてア
  173.   ボートします。
  174.  
  175.   この命令はスクリプト全体に対する宣言として機能します。スクリプトファイルの
  176.   うちどこの行に書いても効果は同じです。2個以上timeout を記述した場合は最後
  177.   のひとつだけが有効です。
  178.  
  179.   0を指定するとタイムアウトなしになります。デフォルトは0です。
  180.  
  181. (11)code 命令 (この機能はNifTerm 2.0から対応です)
  182.   書式  code SJIS | NJIS | OJIS | EUC
  183.   例   code NJIS       // 新JISを指定
  184.  
  185.   接続してから切断するまでの間の通信に使う漢字コードを指定します。
  186.   この命令はスクリプト全体に対する宣言として機能します。スクリプトファイルの
  187.   うちどこの行に書いても効果は同じです。2個以上code を記述した場合は最後の
  188.   ひとつだけが有効です。
  189.  
  190.   通信の途中(接続から切断までの間)で動的にコードを変えることはできません。
  191.  
  192.   指定の意味は以下のとおりです。
  193.    SJIS  シフトJIS
  194.    NJIS  新JIS
  195.    OJIS  旧JIS
  196.    EUC   EUC
  197.   デフォルトはSJISです。
  198.  
  199.   ※シフトJISが通信データ量が一番少なくなりますのでシフトJISが使えるアクセス
  200.   ポイントではシフトJISにする(デフォルトなので明示的な指定は不要です)のが有
  201.   利だと思います。
  202.  
  203. 7.注意事項
  204.     goto 命令でループをくむときは、間にwait 命令が入るようにしてください。
  205.     wait 命令を実行せずにループすると、Windows がハング状態になります。
  206.  
  207.     受信行が終わっているか(改行しているか)確認するためには、右端が「\r」とマ
  208.     ッチするかで調べてください。複数行にまたがる文字列を1個のwait命令で検出す
  209.   ることはできません。
  210.  
  211.   プロンプトを待った後、文字列を送信し、さらに同じプロンプトを待つ場合は、次
  212.   の※のようにして、送った行のエコーバックを受信し終わるまで待ってください。
  213.   ※の行を入れないと、次のwait命令では前の応答済みプロンプトにヒットしてしま
  214.   います
  215.  
  216.     wait left=":"
  217.     send "1\r"
  218.     wait right=="\r"//※1\rを送ったプロンプトの行が終わるのを待つ
  219.     wait left=":"
  220.  
  221.  
  222. 8.作り方のコツ
  223.   まず、漢字コードだけ指定した何もしないスクリプトファイルを作ります。ファイ
  224.   ル名はアクセスポイントの種類がわかる名前をちゃんとつけておきます。
  225. ------------------------------------------------------------------------------
  226.     code NJIS
  227. :login
  228.     end
  229. :logout
  230.     end
  231. ------------------------------------------------------------------------------
  232.   次に新しいアクセスポイントの設定を作ります。アクセスポイントの電話番号、ア
  233.   クセス方法などはもうここでちゃんと指定してしまっておきます。実行するとたぶ
  234.   んどこかのプロンプト待ちで止まります。そこでオートパイロット中断して、手で
  235.   ニフティにつなぐ、切断する、の手順をやってみます。
  236.  
  237.   生ログファイルを開いて、どういうプロンプトにどういう応答を入れたかを確認し
  238.   ます(NifTermのターミナルウィンドウではスクロールアップしたとたんに化け文字
  239.   の行が消えたりしますので、生ログファイルをエディタで開いてください)。
  240.  
  241.   その情報を元に、スクリプトの:loginとendの間、:logout とendの間を埋めます。
  242.  
  243.  
  244. 9.サンプル
  245.  
  246.   実動するサンプルです。動かすときは点線の間を切り取って拡張子.LSCのファイル
  247.   にして4で説明したディレクトリに置いてください。
  248.  
  249. 9.1 CIS AP用
  250. ------------------------------------------------------------------------------
  251. // NifTerm ログインスクリプトサンプル for CompuServe AP
  252.  
  253. // これはサンプルです。実用を目的としたものではなく、スクリプトの文法の理解を
  254. // 助けることを目的としています。
  255.  
  256. // ログイン部分
  257. // モデムから「CONNECT」 が返ったあと、
  258. // ホストから「Enter Connection-ID」 が返る前までを記述します。
  259.  
  260. :login     // このラベルで始める必要があります。
  261. :login_send00
  262.     // 4秒待ちます
  263.     wait elapsed 4000
  264.  
  265.     // 改行 を送ります
  266.     send "\r"
  267.  
  268.     // 化けた文字を待ちます
  269.     // (化け文字は手でアクセスしたときのログ内容をYYMMDD.LOGからコピー)
  270.     wait right == ":"  // 化け文字が来たら次へ
  271.       or elapsed 30000 goto login_error     // 30 秒応答がなければ中止
  272.  
  273.     // 「NIFTY」改行 をおくります
  274.     send "NIFTY\r"
  275.     // あとはEnter Connection-IDが来るのでスクリプトは終わり
  276.     end
  277.  
  278. :login_error
  279.     disconnect  // 回線切断
  280.     abort "ログインできません"
  281.  
  282. // ログアウト部分
  283. // NIFTY に「BYE\r」 を送ったあと、
  284. // 回線切断までを記述します
  285.  
  286. :logout       // このラベルで始める必要があります
  287.     // 化けた文字を待ちます
  288.     // (化け文字は手でアクセスしたときのログ内容をYYMMDD.LOGからコピー)
  289.     wait right == ":" // 化け文字が来たら次へ
  290.       or elapsed 5000 goto logout_end    // 5 秒応答がなければ中止
  291.  
  292.     // 「off」改行 をおくります
  293.     send "off\r"
  294.     end
  295.  
  296. :logout_end
  297.     disconnect  // 回線切断
  298.     end
  299. ------------------------------------------------------------------------------
  300.  
  301.  
  302. 9.2 Connect Packet Service(旧称TYMNET)用
  303. ------------------------------------------------------------------------------
  304. // NifTerm ログインスクリプトサンプル for TYMNET AP
  305.  
  306. // これはサンプルです。実用を目的としたものではなく、スクリプトの文法の理解を
  307. // 助けることを目的としています。
  308.  
  309. // ログイン部分
  310. // モデムから「CONNECT」 が返ったあと、
  311. // ホストから「Enter Connection-ID」 が返る前までを記述します。
  312.  
  313. :login          // このラベルで始める必要があります
  314.  
  315.     // ifierで終わる行が来るのを待ちます。
  316.     // 化け文字が違うAPがあるので一定時間待ってもこない場合は先に行きます。
  317.     wait right=="ifier"
  318.       or elapsed 5000
  319.  
  320.     // 1文字 O を送ります。改行は不要です。
  321.     wait elapsed 2000
  322.     send "O"
  323.  
  324.     // please log in: を待ちます。
  325.     // 化け文字が違うAPがあるので一定時間待ってもこない場合は先に行きます。
  326.     wait right=="log in: "
  327.       or elapsed 5000
  328.  
  329.     // NIFTY 改行 を送ります
  330.     send "NIFTY\r"
  331.     end
  332.  
  333. // ログアウト部分
  334. // NIFTY に「BYE\r」 を送ったあと、
  335. // 回線切断までを記述します
  336.  
  337. :logout
  338.  
  339.     // please log in: を待って回線を切断します。
  340.     // 化け文字が違うAPがあるので一定時間待ってもこない場合は切ります。
  341.     wait right=="log in: "
  342.       or elapsed 5000
  343.     disconnect
  344.     end
  345. ------------------------------------------------------------------------------
  346.  
  347.  
  348. 9.3 INFONET用(ニュージーランド以外)
  349. ------------------------------------------------------------------------------
  350. // NifTerm ログインスクリプトサンプル for INFONET AP
  351.  
  352. // これはサンプルです。実用を目的としたものではなく、スクリプトの文法の理解を
  353. // 助けることを目的としています。
  354.  
  355. code NJIS   // 漢字コード新JISを指定します。
  356.  
  357. // 化け文字があまりにもでたらめなので
  358. // 送れば適当な時間内にホストが応答するものとして適当に待ちながら送ります。
  359. // うまくいかないときは待ち時間を長くしてみてください。
  360.  
  361. // ログイン部分
  362. // モデムから「CONNECT」 が返ったあと、
  363. // ホストから「Enter Connection-ID」 が返る前までを記述します。
  364.  
  365. :login
  366.    // 適当に間をおきながら改行を3回送ります
  367.    wait elapsed 6000
  368.    send "\r"
  369.    wait elapsed 1000
  370.    send "\r"
  371.    wait elapsed 1000
  372.    send "\r"
  373.    wait elapsed 1000
  374.  
  375.    // C 改行 を送ります。
  376.    send "C\r"
  377.    wait elapsed 5000
  378.  
  379.    // NIF 改行を送ります。
  380.    send "NIF\r"
  381.  
  382.    // しばらく待ってもニフティに入れなかったらエラーにします。
  383.    wait right == "nter Connection-ID  --->"
  384.      or elapsed 30000 goto error
  385.    end
  386.  
  387. :error
  388.     disconnect  // 回線切断
  389.     abort "ログインできません"
  390.  
  391. // ログアウト部分
  392. // NIFTY に「BYE\r」 を送ったあと、
  393. // 回線切断までを記述します
  394.  
  395. :logout
  396.    // ログアウト処理が終わりそうなくらいの時間を待って回線を切ります。
  397.    wait elapsed 5000
  398.    disconnect
  399.    end
  400. ------------------------------------------------------------------------------
  401.  
  402.                    -・-
  403.