プロが教える店舗&オフィスのセキュリティ対策術

<マクロ命令>
1.sendln 'yum -y update パッケージ (たとえば perl等)'
2.wait '~]$' '~]#'
3.closett で、ターミナルを閉じる。

と、Teratermマクロでパッケージのアップデート→ターミナルを閉じる ように動作するマクロにしています。

ただ、yum -y update perl 実行中
Updating : perl.x86_64 [################################### ] 4/8
の時のアップテート途中で、

2の命令が動作してしまい、そのまま、3のクローズ命令が実行されてしまい、
アップデートが終了していないのに、ターミナルが閉じてしまいます。

update完了後、
[root@server ~]#
に戻ってきたことを判別して(2の命令)から、ターミナルを閉じる(3の命令)を実行するように想定しているのですが、
1の命令中に、2の命令、3の命令が続いて走ってしまうようなのです。


2の命令の書き方がまずいのでしょうか?
ご教授お願いします。

A 回答 (2件)

>>単純にタイムアウトしただけじゃないですか?


>とはどういうことを刺されているのでしょうか?
>waitの戻り値を確認できるのですか。

前回の質問でも指摘されたと思いますが…マニュアルちゃんと読んでますか?

http://ttssh2.sourceforge.jp/manual/ja/macro/com …
>文字列 <string1> [<string2> ...] のうち一つがホストから送られてくるか、タイムアウトが発生するまで MACRO を停止させる。文字列は最大 10 個まで指定できる。
> システム変数 timeout か mtimeout が 0 より大きい場合、<timeout>.<mtimeout> 秒の時間がすぎるとタイムアウトが発生する。タイムアウトの値が 0 以下の場合は、タイムアウトは発生しない。
>これらのコマンドの実行結果はシステム変数 result に格納される。変数 result の値の意味は以下のとおり。
って書かれてますけど。

システム変数 timeoutはどうなっています?
http://ttssh2.sourceforge.jp/manual/ja/macro/syn …
初期値は0…みたいですな。
特にいじってなければタイムアウトはしていないことになりますが…
# タイムアウト無し…ってのはちょいと推奨出来ませんけどね。

resultの値はいくつになっていますかね?
今回の場合、resultが2以外の場合はシェルプロンプトに戻っていません。
# 一般ユーザーでは普通はyum updateは失敗するかと思われますが…。
    • good
    • 0
この回答へのお礼

>初期値は0…みたいですな。
なるほどそうなのですね。ちょっと読みが足りませんでした。

すみません。だいぶ読み方が分かってきた気がするので
がんばってみることにします。

あとtimeoutも確認してみたいと思います。

情報ありがとうございました。

お礼日時:2013/04/16 00:19

> Updating : perl.x86_64 >[################################### ] 4/8


>の時のアップテート途中で、
> 2の命令が動作してしまい

単純にタイムアウトしただけじゃないですか?
waitの戻り値、確認してますか?

この回答への補足

情報ありがとうございます。

>単純にタイムアウトしただけじゃないですか?
とはどういうことを刺されているのでしょうか?

>waitの戻り値~
waitの戻り値を確認できるのですか。

補足日時:2013/04/15 08:14
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!