
Teratermmacroでローカル(cygwin)に入り、サーバ(HP-UX)にリモートで入った後、
コマンドの戻り値で後の行動を操作したいのですが、うまくいきません。
わかる方、教えていただけませんか。
ざっくり以下のようなマクロを組んでいます。
----------------------------------------------------------
sendln 'ssh name@host1'
wait Prompt
sendln 'sendmsg "test"'(のようなコマンド) ←これの戻り値がほしい
if 戻り値 = 0 then
○○
elseif 戻り値 = 1 then
wait Prompt
sendln 'exit'
wait Prompt
sendln 'ssh name2@host2'
以下略
----------------------------------------------------------
上記の「戻り値」をどのようにすれば戻り値で判別してくれるでしょうか。
if文の条件式を $?やresultでやりましたが、どのような戻り値でも
必ず$?は0、resultは1で固定でした。
また、sendmsgとif文の間に以下のように試しましたが、失敗しました。
例1:
----------------------------------------------------------
sendln 'echo $?'
recvln
if inputstr = 0 then ←syntax errorになります。
○○
elseif inputstr = 1 then
----------------------------------------------------------
例2:http://detail.chiebukuro.yahoo.co.jp/qa/question …参照
----------------------------------------------------------
sendln 'echo $?'
recvln
recvln
hensu=inputstr ←Type mismatch.のエラーになる。 直前にstr2intを入れたりしても駄目でした。
ちなみにsendln 'echo $?'を挟まずsendmsgの直後にrecvlnでも駄目です。
if hensu = 0 then
○○
elseif hensu = 1 then
----------------------------------------------------------
host1にシェルスクリプトを入れることは出来ません。
No.2ベストアンサー
- 回答日時:
基本方針は、echo $? の出力文字をttlで受信して判定、でいいと思います。
・inputstrは文字列なので、=での比較はできません
strcompareコマンドで比較→変数resultで判定
あるいは
str2int 変数 intputstr で変数に数値化→if 変数=0 等と判定
ということになります。
http://ttssh2.sourceforge.jp/manual/ja/macro/syn …
http://ttssh2.sourceforge.jp/manual/ja/macro/com …
http://ttssh2.sourceforge.jp/manual/ja/macro/com …
・recvln1つではエコーバックの分を受け取ってしまうようです。
他の出力を受信してしまう場合もあります。
確実にやるなら、目印を付けてwaitでそこまで待つ、というのがいい思います
sendln 'echo "=== EXIT STATUS === : $?"'
wait '=== EXIT STATUS === : '
recvln
・シェルスクリプトを入れることはできなくても、複合コマンドを実行することはできるはずです。
sendln '(sendmsg "test" && echo "==== OK ====") || echo "==== NG ===="'
waitlnで待ち→resultで分岐とできます
http://ttssh2.sourceforge.jp/manual/ja/macro/com …
この回答への補足
以下で試しましたが、bbbが存在しなく、echoの結果がNGとでたのに、Result1と表示されました。
sendln 'tail bbb && echo "==OK==" || echo "==NG=="'
waitln '==OK==' '==NG=='
if result = 0 then
messagebox inputstr "Result"
elseif result = 1 then
messagebox inputstr "Result1"
elseif result = 2 then
messagebox inputstr "Result2"
endif
頂いた内容を合わせて出来ました。ちゃんとResult2とでました。ありがとうございます!
sendln 'tail bbb && echo "==OK==" || echo "==NG=="'
wait '=='
recvln
recvln
waitln '==OK==' '==NG=='
if result = 0 then
messagebox inputstr "Result"
elseif result = 1 then
messagebox inputstr "Result1"
elseif result = 2 then
messagebox inputstr "Result2"
endif
No.1
- 回答日時:
ちょいと試してみました。
# 接続先はCentOS 6.4のbashです。
----------------------------------------------------------
setsync 1
sendln 'echo $?'
recvln
recvln
if result = 1 then
messagebox inputstr "Result"
endif
----------------------------------------------------------
で、falseコマンド実行後は1が、trueコマンド実行後は0が表示されました。
動機モードになっていなかったため、recvlnを実行したときには受信処理が終わっていたのではないでしょうか?
この回答への補足
条件分岐に0、1をそれぞれ入れて試しましたが、echo の結果が0なのに、if result = 0 thenではなく、if result = 1 thenの分岐に進みました。recvlnの結果がresultに格納されてません。
補足日時:2013/09/23 12:03お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
プロが教える店舗&オフィスのセキュリティ対策術
中・小規模の店舗やオフィスのセキュリティセキュリティ対策について、プロにどう対策すべきか 何を注意すべきかを教えていただきました!
-
Teratermマクロの戻り値の取得失敗
その他(プログラミング・Web制作)
-
Teratemマクロ(ttl)のwaitについて
その他(プログラミング・Web制作)
-
[teraterm] waitコマンドで停止しない。
その他(プログラミング・Web制作)
-
4
TeraTermマクロのinputboxで入力した値をメッセージ確認表示するには?
サーバー
-
5
一つのTeratermのマクロで複数のTeratermのウィンドウを立ち上げることはできますか?
サーバー
-
6
TeraTermマクロの文字列結合
その他(プログラミング・Web制作)
-
7
TERA TERMを隠す方法
その他(プログラミング・Web制作)
-
8
TeraTermマクロの”Link macro first”解消について
その他(プログラミング・Web制作)
-
9
【Teratermマクロ】文字列の分割について
その他(プログラミング・Web制作)
-
10
ttlマクロによるディレクトリ配下の取得
その他(プログラミング・Web制作)
-
11
teraterm から起動したプログラムの出力結果を得たい
その他(コンピューター・テクノロジー)
-
12
ファイルの存在を調べるコマンドってあります?
UNIX・Linux
-
13
Tera Term のマクロでの改行コード変更
その他(コンピューター・テクノロジー)
-
14
TeratermでPing疎通の確認
その他(プログラミング・Web制作)
-
15
プログラム実行中に強制停止させる方法
Ruby
-
16
Teraterm scprecvの上書き確認なし
フリーソフト
-
17
teratermマクロをVBAで実行
Visual Basic(VBA)
-
18
【Teraterm】文字列と変数の連結方法
その他(プログラミング・Web制作)
-
19
VbscriptにてTeraterm マクロを実行したいのですがRunメソッドエラーで実行できない
その他(プログラミング・Web制作)
-
20
TeraTermマクロでの出力キャッチ
その他(プログラミング・Web制作)
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
人気Q&Aランキング
-
4
VBユーザーフォームで時間入力
-
5
コマンドプロンプトが実行中か...
-
6
EEPROMのデータの初期化について
-
7
makeコマンドのエラー
-
8
TEXの表の位置が・・・
-
9
Captionが変更されない
-
10
ttlで戻り値を取得する方法
-
11
別のユーザーフォームのコマン...
-
12
JP1起動バッチについて
-
13
VB6.0でフォルダのアクセス制限...
-
14
コマンド選択式のアドベンチャ...
-
15
パソコン、コマンドプロンプト...
-
16
PowerShellにおけるコマンドの...
-
17
負の数を正の数に変換
-
18
system関数でのシェル起動について
-
19
デフォルトのショートカットキ...
-
20
ルーターにつながっている全て...
おすすめ情報
公式facebook
公式twitter