
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で質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) VBA EOMonthについて 5 2023/02/10 11:51
- Visual Basic(VBA) vba 最大値 条件分岐 4 2022/12/10 10:20
- Visual Basic(VBA) excel VBA if文について 3 2022/03/27 17:42
- PHP DBのハッシュ化したパスワードをpassword_verifyで戻し照合したのですが上手く行きません 2 2023/02/06 13:24
- Visual Basic(VBA) excel2021で実行できないマクロ。どこを直したらいいのか 2 2022/03/28 03:40
- PHP 重複を防ぐ記述について教えて下さい。 3 2023/04/03 14:35
- Visual Basic(VBA) [Excel VBA] このコードでは行の挿入や行の消去をすると13のエラーが出てしまう。 3 2022/12/09 00:29
- Visual Basic(VBA) VBAで列を削除 3 2023/02/01 11:00
- Visual Basic(VBA) vba GetAsyncKeyState関数について 1 2023/08/24 12:08
- UNIX・Linux 次の要件を満たすにはどのように修正したらよろしいでしょうか 1 2022/11/24 20:57
このQ&Aを見た人はこんなQ&Aも見ています
-
Teratermマクロの戻り値の取得失敗
その他(プログラミング・Web制作)
-
[teraterm] waitコマンドで停止しない。
その他(プログラミング・Web制作)
-
一つのTeratermのマクロで複数のTeratermのウィンドウを立ち上げることはできますか?
サーバー
-
-
4
Teratemマクロ(ttl)のwaitについて
その他(プログラミング・Web制作)
-
5
TeraTermマクロのinputboxで入力した値をメッセージ確認表示するには?
サーバー
-
6
TERA TERMを隠す方法
その他(プログラミング・Web制作)
-
7
TeraTermマクロの文字列結合
その他(プログラミング・Web制作)
-
8
teraterm から起動したプログラムの出力結果を得たい
その他(コンピューター・テクノロジー)
-
9
tera term マクロのinputbox
その他(コンピューター・テクノロジー)
-
10
TeraTermのマクロについて
その他(コンピューター・テクノロジー)
-
11
Tera Term のマクロでの改行コード変更
その他(コンピューター・テクノロジー)
-
12
【Teratermマクロ】文字列の一致比較について
その他(プログラミング・Web制作)
-
13
ttlマクロによるディレクトリ配下の取得
その他(プログラミング・Web制作)
-
14
Teraterm scprecvの上書き確認なし
フリーソフト
-
15
【Teratermマクロ】文字列の分割について
その他(プログラミング・Web制作)
-
16
【Teraterm】文字列と変数の連結方法
その他(プログラミング・Web制作)
-
17
TeraTermマクロの”Link macro first”解消について
その他(プログラミング・Web制作)
-
18
teratermで、ファイル名をinputstrに代入する
その他(プログラミング・Web制作)
-
19
TeratermでPing疎通の確認
その他(プログラミング・Web制作)
-
20
Teraマクロで日付ディレクトリを作り日付時間ファイル名を作成するには
その他(ソフトウェア)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
コマンドプロンプトが実行中か...
-
【C#】 DOSコマンドを使いたい
-
コマンドプロンプトで表示が多...
-
N88 BASIC リスト表示方法
-
HEXから元に戻すには
-
mountのDOSコマンド
-
ttlで戻り値を取得する方法
-
argv[]によるパラメタ数の制限
-
Lotus Notes R5 ...
-
シェルスクリプトについて
-
TEXの表の位置が・・・
-
バッチファイルでキー操作を行う。
-
ImageMagickを使って画像の特定...
-
書籍「プログラミングのための...
-
windowsでバイナリエディタ
-
エクセル コマンドボタンでリセ...
-
シェルのdfコマンドで、ディス...
-
viの行削除コマンドを教えて下...
-
VBでネットワーク上のコンピュ...
-
C#でローカルユーザーやグルー...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
コマンドプロンプトが実行中か...
-
ttlで戻り値を取得する方法
-
コマンドプロンプトで表示が多...
-
バッチファイルでキー操作を行う。
-
Tera Term Proに関する質問です。
-
別のユーザーフォームのコマン...
-
VBユーザーフォームで時間入力
-
コマンドプロンプトですべてのU...
-
コンボボックス(最終行取得)
-
【Teratermマクロ】文字列の一...
-
ルーターにつながっている全て...
-
RTX1100の削除コマンド
-
EEPROMのデータの初期化について
-
PowerShell実行結果をデスクト...
-
system関数でのシェル起動について
-
DOSコマンドでポートから受信
-
VBA でshell関数を使ってコマン...
-
C#でローカルユーザーやグルー...
-
パワーシェル 画面解像度 変更
-
文字の点滅はどうやるのですか?
おすすめ情報