プロが教える店舗&オフィスのセキュリティ対策術

expectを使って自動でSSHログインした後にコマンドを実行したいと思っています。
df -hやmailqのようなコマンドは問題ないのですが、awkを利用してダラー?"$"を
入れてフィールド操作しようとするとダラーだけうまく読み込んでくれないのです。

■以下スクリプト
------------------------------------------------------------
read key
COMMAND="$key"
expect -c "
set timeout 3
spawn ssh アカウント@ドメイン
expect sword:
send パスワード\r
sleep 1
expect -re \"$\"
send \"${COMMAND}\r\"
expect logout: close
"
※クローズも正しくないみたいですが、無理やりtimeoutで閉じれているのでとりあえず。。

■実行結果
------------------------------------------------------------
spawn ssh アカウント@ドメイン
アカウント@ドメイン's password: can't read "NF": no such variable
while executing
"send "sudo awk '$NF>0' /proc/user_beancounters\r""

echoでCOMMANDを表示させるとちゃんと代入されているのです。
これがダラーを使わずに'{ptint}'とすれば問題ありません。となると
awkは問題ないので、やはり問題はダラーにあると思います。

バックスラッシュを入れてエスケープしてもダラーを二つ並べてもできません。
read "NFとなっているので、明示的に数字を入れてフィールドを指定してもだめです。


どなたかexpectのなかでダラーを読ませる方法をしりませんでしょうか。

A 回答 (1件)

$の前にバックスラッシュ2つ付けてください。


keyの入力で

ls -l | awk '{print \\$6}'

のようにします。
    • good
    • 2
この回答へのお礼

お礼遅れました!
どうもです!
おかげさまでダラーいけました !

ありがとうございますー

お礼日時:2010/01/15 22:21

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!