- - PR -
Expectによる対話型スクリプト
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2008-10-17 04:29
現在、Expectを使用してNW機器のコンフィグバックアップスクリプトを作成しているのですが、
パスワード内に"$"が含まれており、パスワード認証が通りません。 バックスラッシュによるエスケープ処理も行っているのですがうまく動作していないようです。 どうか皆様のお知恵を拝借出来ないでしょうか。 以下、スクリプトの一部を抜粋します。(投稿した際にバックスラッシュの前にもう一つバックスラッシュが追加されてしまいますが、本来は1つです) === #!/usr/bin/expect -- expect -c " set timeout 20 spawn telnet IP.Add.re.ss expect \\"Password:\\" send \\"****\\$a**\\r\\" expect "router>" send \\"enable\\r\\" interact " === 以下、エラーメッセージになります。 === User Access Verification Password: can't read "a": no such variable === | ||||
|
投稿日時: 2008-10-17 20:10
直接回答ではありません。
前の質問の際にも感じましたが、何故定期的に自動バックアップが必要なのでしょうか? 定期的にLOGを保存するのなら判りますが、configurationの保存は設定変更時に手動で 行うのが一般的ではありませんか? セキュリティ面からも、この自動スクリプトをキャプチャーされるケースを想定すると 望ましくないように思えます。 # 一応今回の回避策として、パスワードを構成する文字を変更する方法が容易である # とコメントさせて頂きますが、どうも納得しづらいです。 | ||||
|
投稿日時: 2008-10-18 03:15
ご返答有難う御座います。
自動バックアップの目的は、担当者全員にTFTPサーバへのマニュアルバックアップを徹底させることが困難だからです。 機器が世界中に分散しており、また管理者の人種も多岐に渡るものですから、どうしても管理状況が煩雑になってしまいます。(私の管理能力不足と言えばそれまでですが。。。) そういった背景から、ログとバックアップファイルで過去の変更記録を管理したいと考えた次第です。 したがって、パスワードの変更も困難な状態です。 本筋から少しずれてしまいましたが、別の方法を考えることとします。 | ||||
|
投稿日時: 2008-10-28 18:49
$はシェル変数のプレフィクスでありexpect変数のプレフィクスでもあるので
2回エスケープしないといけません。 \\\$ | ||||
|
投稿日時: 2008-10-28 19:14
話を聞いた限りだと、定期的にバックアップをとるというよりは、変更(および変更内容)を検出できるといいのかな? と思いました。Tripwire とか。 |
1