| 00371 02/06/25 11:01 | RE:00370 wait文 |
| 投稿者 : akihihi | コメントを投稿する |
試してみます > うむ、もしダメだとしたら、念のため > > timeout 100 > message "今からwaitします。" > wait "DAISUB" > message "waitしました。" > > のような形で本当にwait文が一瞬で終わってるかどうかテストして欲しいなぁと思 >ったりします。 |
| 00372 02/06/25 11:44 | RE:00370 wait文 |
| 投稿者 : akihihi | コメントを投稿する |
まず、示されメッセージ文を入れずに実行するとwait文が 有効になりません。直近の「timuoute 0」としてます よくみてみると、おもうに、ログライトのタイミングがおか しくないでしょうか?waitは内部的にはうまく動作してそう な気がします。 これのほかに、ハングアップ直前にwritelog文でログにメッセージを 記録するのですが、それも、変な位置(最後でない、サーバから のメッセージといりくんで)に記録されます # ### オリジナルスクリプトの場合 ### # DAISUB2M [33]: cat da2snm.log cat da2po.log −−−◆waitするも以下3行がsendされる? cat da2lk2.log cat da2eco1.log root 1809 1 0 8月 6 ? 300:48 /opt/OKIsnmpa/bin/snmpd root 1821 1 0 8月 6 ? 471:59 /opt/OKIsnmpa/bin/machined root 1815 1 0 8月 6 ? 0:00 /opt/OKIsnmpa/bin/mib2d root 1845 1844 0 8月 6 ? 627:43 /opt/OKIsnmpa/bin/snmpd-ora root 1844 1 0 8月 6 ? 139:46 /opt/OKIsnmpa/bin/snmpd-ora root 1837 1 0 8月 6 ? 55515:51 /opt/OKIsnmpa/bin/snmpd-tux root 1794 1 0 8月 6 ? 35:38 /usr/lbin/cmsnmpd ========= DAISUB2M SNMP 7/7 OK ========= ------------------------------ 2002年06月25日 11時09分42秒 ------------------------------ DAISUB2M [34]: cat da2po.log # ### 示されたメッセージを入れると ### # DAISUB2M [33]: cat da2snm.log root 1809 1 0 8月 6 ? 300:48 /opt/OKIsnmpa/bin/snmpd root 1821 1 0 8月 6 ? 472:00 /opt/OKIsnmpa/bin/machined root 1815 1 0 8月 6 ? 0:00 /opt/OKIsnmpa/bin/mib2d root 1845 1844 0 8月 6 ? 627:44 /opt/OKIsnmpa/bin/snmpd-ora root 1844 1 0 8月 6 ? 139:46 /opt/OKIsnmpa/bin/snmpd-ora root 1837 1 0 8月 6 ? 55516:25 /opt/OKIsnmpa/bin/snmpd-tux root 1794 1 0 8月 6 ? 35:38 /usr/lbin/cmsnmpd ========= DAISUB2M SNMP 7/7 OK ========= ------------------------------ 2002年06月25日 11時19分00秒 ------------------------------ DAISUB2M [34]: cat da2po.log O −◆以下示されたメッセージを入れたソースリスト−−−−−−−− ;********************** ;***** ログ表示 ***** ;********************** timeout 0 wait "DAISUB2M" send "cat da2ora.log" + "^M" wait "DAISUB2M" ;sleep 1 send "cat da2tux.log" + "^M" wait "DAISUB2M" ;sleep 1 send "cat da2ns.log" + "^M" wait "DAISUB2M" ;sleep 1 timeout 100 −−−−これらをいれました message "今からwaitします。" send "cat da2snm.log" + "^M" wait "DAISUB" message "waitしました。" ;wait "DAISUB2M" ;sleep 1 send "cat da2po.log" + "^M" wait "DAISUB2M" ;sleep 1 send "cat da2lk2.log" + "^M" wait "DAISUB2M" ;sleep 1 send "cat da2eco1.log" + "^M" wait "DAISUB2M" ;sleep 1 send "cat da2erco.log" + "^M" wait "DAISUB2M" ;sleep 1 send "cat da2ervi.log" + "^M" wait "DAISUB2M" ;sleep 1 send "cat da2sysop.log" + "^M" wait "DAISUB2M" ;sleep 1 send "cat da2sysco.log" + "^M" wait "DAISUB2M" ;send "cat da2sysvi.log" + "^M" wait "DAISUB2M" timeout 10 goto END ; ENDへジャンプ |
| 00373 02/06/25 17:31 | RE:00372 wait文 |
| 投稿者 : 秀まるお2 | コメントを投稿する |
中身を理解するのが困難なので、解読は途中で挫折させていただきます。 それよりも、1つ間違いの元のような物を見つけました。 秀Termのsend文は、実際に文字列を送信する前に終了します。例えば send "cat da2ora.log" + "^M" writebuffer "AAAA" とすると、catコマンドの前にAAAAが出てくるはずです。 その辺で誤解があるんじゃないかという気がします。 例えば上記の例で言うなら、catコマンドの送信(およびそのエコーバック)を待 ってから次の処理をさせたいなら、 send "cat da2ora.log" + "^M" wait "^M^J" writebuffer "AAAA" のように記述しないとダメです。 あとあと、全体的に、ホストからのプロンプトを完全に待つことなくsend文を使っ てますが、これもあまりよくないです。 例えば wait "DAISUB2M" send "cat da2ora.log" + "^M" の部分がありますが、ここは出来れば wait "DAISUB2M" wait postidle(1) ": " send "cat da2ora.log" + "^M" のように正確にプロンプトを待ってから送信するようにした方がいいと思います。 全体的に、 − 何か文字列を送ったら、そのエコーバックを待ってから次の処理をする。 − 何か送信する場合は、プロンプトを完全に待ってから送信する。 ってことで直してみてはどうでしょ? |
| 新規に投稿する |