
お世話になります。
下記のようにマクロを記述して、コマンドの戻り値で判定を行い
異常時にダイアログを表示させようとしています。
sendln '<コマンド>'
wait 'root@'
sendln 'echo "=== STATUS $? ==="'
wait 'root@'
recvln
recvln
strcompare inputstr '=== STATUS 0 ==='
if result!=0
messagebox 'Error' param1
end
こちらを実行すると、<コマンド>の内容に依って下記悪い実行例のように
<コマンド>のあとのwaitが効かず、<コマンド>が終わる前にechoが実行されたような
動きをしており正しく動作しない場合があります。
☆悪い実行例
[root@ ~]# <コマンド>
echo "=== STATUS $? ===
[root@ ~]# echo "=== STATUS $? ===
=== STATUS $1 ===
[root@ ~]
☆良い実行例
[root@ ~]# <コマンド>
[root@ ~]# echo "=== STATUS $? ===
=== STATUS $1 ===
[root@ ~]
常に良い実行例のように、<コマンド>が終わってからechoするようにしたいのですが
どのように修正すればいいでしょうか?
なお、timeoutについてはマクロ中で設定していないのでタイムアウトしない認識でおります。
また、悪い実行例のパターンで下記のようにしてwaitの戻り値を拾ったところ1となっていました。
sendln '<コマンド>'
wait 'root@'
messagebox result param1
sendln 'echo "=== STATUS $? ==="'
以下、試して駄目だったことです。
・同期モードの使用
setsync=1、およびtimeout=60をマクロの前半部分に記載。
特に変化はなし。
・<コマンド>のあとのwaitを2つ重ねる
<コマンド>の内容によって、うまく言ったようにみえるパターンと
waitの無限待ちになるパターンの両方あり。
<コマンド>の内容に依存するのか、タイミング問題で偶々うまく言ったようにみえたのか
判断がつかないため保留中。
・<コマンド>の後にpause 1を入れる
<コマンド>の実行速度が常に一定ではないので、pause 1では間に合わない場合がある。
適切なpause時間の見積りが困難なため保留。
・戻り値の判定をシェルスクリプトなどで行う
顧客要件により没
以上、よろしくお願い致します。
A 回答 (1件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
現象からすると、悪い例では
[root@ ~]# <コマンド>
のroot@ をwaitで検出してるように想います。
http://ttssh2.sourceforge.jp/manual/ja/macro/com …
でバッファをクリアするのはでょうでしょうか?
回答有難うございます。
>バッファーの中に古い文字がたまっているために受信文字を処理するコマンドの結果が予期しないものになることがあり、flushrecv コマンドによってそれを防ぐことができる。
こういう仕組みなのですね、勉強になりました。
まだ動作の確認がとれておりませんがひとまずお礼まで。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- UNIX・Linux linuxサーバーのキャッシュをクリアするコマンドを実行したい。 5 2023/01/24 14:52
- その他(開発・運用・管理) WindowsからSSHでサーバーにあるファイルをダウンロードできない…。 3 2022/04/24 11:08
- UNIX・Linux cronの@rebootでのdateコマンドの実行につきまして 2 2023/06/11 16:23
- CAD・DTP Autocad Scriptファイルからの入力とコマンドラインからの入力が違う 1 2023/08/01 09:13
- その他(パソコン・スマホ・電化製品) LINUXPCに詳しい人に気楽に答えてほしい質問です。 2 2022/10/25 08:07
- UNIX・Linux linuxシェルスクリプト(baシェル)でファイルにかかれた数式を評価し計算する方法を教えてください 1 2022/08/26 14:28
- UNIX・Linux ubuntuに外部侵入できるか 2 2022/04/09 12:48
- Windows 10 外部ドライブにマウントできない問題について 9 2022/03/22 18:08
- Excel(エクセル) エクセルVBA 複数行にまたがっている選択を判定するには 2 2023/05/21 21:54
- UNIX・Linux Linuxについて質問です。 以下のhistoryの出力結果から、sedコマンドのファイル名tmp1 1 2023/02/03 20:11
このQ&Aを見た人はこんなQ&Aも見ています
-
性格悪い人が優勝
できるだけ性格悪い人になって回答をお願いします。
-
初めて自分の家と他人の家が違う、と意識した時
子供の頃、友達の家に行くと「なんか自分の家と匂いが違うな?」って思いませんでしたか?
-
歩いた自慢大会
「めちゃくちゃ歩いたエピソード」を教えてください。
-
はじめての旅行はどこに行きましたか?
記憶の中で1番昔の旅行先とエピソードを教えてください。
-
かっこよく答えてください!!
あなたは今にも別れそうなカップルの彼女の恋愛相談に乗っています。
-
[teraterm] waitコマンドで停止しない。
その他(プログラミング・Web制作)
-
ttlで戻り値を取得する方法
その他(プログラミング・Web制作)
-
一つのTeratermのマクロで複数のTeratermのウィンドウを立ち上げることはできますか?
サーバー
-
-
4
Teratermマクロの戻り値の取得失敗
その他(プログラミング・Web制作)
-
5
TERA TERMを隠す方法
その他(プログラミング・Web制作)
-
6
Teratermマクロ動作について
システム
-
7
TeraTermマクロのinputboxで入力した値をメッセージ確認表示するには?
サーバー
-
8
Tera Termでのコマンド流し込みの際の文字欠け、不要文字挿入
サーバー
-
9
TeraTermのマクロについて
その他(コンピューター・テクノロジー)
-
10
Tera Term のマクロでの改行コード変更
その他(コンピューター・テクノロジー)
-
11
tera term マクロのinputbox
その他(コンピューター・テクノロジー)
-
12
TeraTermマクロの”Link macro first”解消について
その他(プログラミング・Web制作)
-
13
TeraTermマクロの文字列結合
その他(プログラミング・Web制作)
-
14
Teraterm 1行空白を入れたい。
その他(プログラミング・Web制作)
-
15
【Teratermマクロ】文字列の分割について
その他(プログラミング・Web制作)
-
16
Teraterm scprecvの上書き確認なし
フリーソフト
-
17
【Teraterm】文字列と変数の連結方法
その他(プログラミング・Web制作)
-
18
TeraTermのマクロで制御文字のやり取り
その他(プログラミング・Web制作)
-
19
TeraTermマクロで入力した文字を表示し接続
その他(コンピューター・テクノロジー)
-
20
Teraマクロで日付ディレクトリを作り日付時間ファイル名を作成するには
その他(ソフトウェア)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・昔のあなたへのアドバイス
- ・字面がカッコいい英単語
- ・許せない心理テスト
- ・歩いた自慢大会
- ・「I love you」 をかっこよく翻訳してみてください
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・はじめての旅行はどこに行きましたか?
- ・準・究極の選択
- ・この人頭いいなと思ったエピソード
- ・「それ、メッセージ花火でわざわざ伝えること?」
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・【お題】甲子園での思い出の残し方
- ・【お題】動物のキャッチフレーズ
- ・人生で一番思い出に残ってる靴
- ・これ何て呼びますか Part2
- ・スタッフと宿泊客が全員斜め上を行くホテルのレビュー
- ・あなたが好きな本屋さんを教えてください
- ・かっこよく答えてください!!
- ・一回も披露したことのない豆知識
- ・ショボ短歌会
- ・いちばん失敗した人決定戦
- ・性格悪い人が優勝
- ・最速怪談選手権
- ・限定しりとり
- ・性格いい人が優勝
- ・これ何て呼びますか
- ・チョコミントアイス
- ・単二電池
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・ゴリラ向け動画サイト「ウホウホ動画」にありがちなこと
- ・泣きながら食べたご飯の思い出
- ・一番好きなみそ汁の具材は?
- ・人生で一番お金がなかったとき
- ・カラオケの鉄板ソング
- ・自分用のお土産
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
MOVEコマンドでサブフォルダー...
-
vba クリップボードクリアにつ...
-
Google ColaboでGUI作成
-
プログラミング言語のバージョ...
-
趣味がプログラミングだと言っ...
-
AIがプログラムする時代のプロ...
-
COPYコマンドで、最後に1文字...
-
10進数から2進数に変換 例 185 ...
-
画像生成AIのプロンプトの作り...
-
ExcelVBAでFormulaR1C1を列範囲...
-
VBAでパワーシェルを実行したい...
-
pythonについて(初心者です)
-
FILMORAを使っているのですがテ...
-
Pythonでの文字列からfloatへの...
-
Python... 環境設定 初心者です...
-
pythonでhtmlファイルの指定文...
-
⚠️至急です!⚠️ Yahoo!知恵袋の...
-
プログラム上での行のマージ方法
-
uwscでPauseキーが押されたら、...
-
Webサイト内に埋め込んだmp4動...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
vba クリップボードクリアにつ...
-
10進数から2進数に変換 例 185 ...
-
Google ColaboでGUI作成
-
プログラム上での行のマージ方法
-
COPYコマンドで、最後に1文字...
-
pythonでhtmlファイルの指定文...
-
pythonについて(初心者です)
-
⚠️至急です!⚠️ Yahoo!知恵袋の...
-
uwscでPauseキーが押されたら、...
-
VBAでパワーシェルを実行したい...
-
画像生成AIのプロンプトの作り...
-
FILMORAを使っているのですがテ...
-
Fortranでシステム時刻をカレン...
-
Python... 環境設定 初心者です...
-
HTMLソースが表示のページのも...
-
数行削除してコピーするbatファ...
-
Pythonでの文字列からfloatへの...
-
Webサイト内に埋め込んだmp4動...
-
PowerAutomateで運賃検索がした...
-
google Colabでmatplotlibの描...
おすすめ情報