0

私の Expect スクリプトでの目標は、マザーボード上の 2 つのプロセッサのプロパティを表示するコマンドを送信することです。リモートログインが成功したと仮定してください。send 句の変数が正常に評価されない場所です。

  1. プロシージャと変数があります: set showcpu "show -d properties /SYS/MB/P\r"

  2. 「cpu」カウントが0から始まり2未満の場合に「送信」を実行するwhileループを作成しました。

    set cpu 0
    
    while { $cpu < 2 } {
      expect {
        -re $prompt {send "${showcpu}${cpu}\r"; }
        timeout {
          my_puts "ILOM prompt timeout error-2" [ list $fh1 $fh3 stdout ]
          exit 1
        }
      }
    
      set cpu [ expr {$cpu + 1} ]
    }
    

実行結果は次のとおりです。

[BL0/SP]-> show -d properties /SYS/MB/P
show: Invalid target /SYS/MB/P

[BL0/SP]-> 0
Invalid command '0' - type help for a list of commands.

$showcpuスクリプトで値を結合したかったので、次の$cpuようになります。

show -d properties /SYS/MB/P0 and show -d properties /SYS/MB/P1.

誰かがそれを達成するために何をする必要があるか教えてもらえますか?

4

1 に答える 1

0

変数${showcpu}自体には、すでに "\r" が含まれています (1. による)。「\r」なしで定義するか:

set showcpu "show -d properties /SYS/MB/P"

または使用string trim( http://wiki.tcl.tk/10174 ):

send "[string trim ${showcpu}]${cpu}\r"

変数が使用されている場所ではなく、変数が設定されている場所の空白を削除することをお勧めします。

于 2013-02-20T09:37:02.200 に答える