• 締切済み

シェルスクリプト中のexpectで変数使う方法

SolarisでshellにBashを使う環境で、リモートのルータに入り コンフィグを操作するscriptを書きたいと思っています。 1.引数に与えられたファイルから値を読み、変数$POLにセットする。 2.expectでルータにSSHし、変数$POLに入っている値を設定する。 3.上記をファイルの行数分繰り返す。 上記を実現しようと以下の様に書いたのですが expect内で変数が扱えません。 (ルータに$POLという文字列のまま送られてしまう) -- #!/usr/bin/bash HOST="192.168.0.100" for list in `cat $1` do POL=$(echo $list | cut -d , -f 1) /usr/local/bin/expect -c ' set timeout 5 spawn ssh -l cm01 $HOST expect "password:" send "hogehoge" expect "router $ " send "config firewall policy\r" expect "router (policy) $ " send "edit $POL\r" send "set firewall on\r" send "end\r" send "exit\r" ' done -- 色々と調べてみたのですが理由がわからず、お教えいただければ幸いです。

みんなの回答

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.2

だよね. 理由が /usr/local/bin/expect -c ' (中略) ' なのは明らかなんだけど, どう直すかねぇ. 標準入力からコマンドを読み込ますことってできたっけ? できるなら heredoc が簡単だけど, できなかったらどうしよう. 最悪 expect 用のスクリプトを別ファイルに書けばいいのかな?

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

ん? $POL は $POL のままで, $HOST は指定した値になってるのかな?

ketzer_
質問者

補足

書き忘れでした。 $HOSTも$POLもどちらも値が入らず変数名のままです。

関連するQ&A

専門家に質問してみよう