- PR -

Expectによる対話型スクリプト

1
投稿者投稿内容
Tak
会議室デビュー日: 2008/10/04
投稿数: 9
投稿日時: 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
===

BackDoor
ぬし
会議室デビュー日: 2006/02/20
投稿数: 831
投稿日時: 2008-10-17 20:10
直接回答ではありません。

前の質問の際にも感じましたが、何故定期的に自動バックアップが必要なのでしょうか?

定期的にLOGを保存するのなら判りますが、configurationの保存は設定変更時に手動で
行うのが一般的ではありませんか?

セキュリティ面からも、この自動スクリプトをキャプチャーされるケースを想定すると
望ましくないように思えます。

# 一応今回の回避策として、パスワードを構成する文字を変更する方法が容易である
# とコメントさせて頂きますが、どうも納得しづらいです。
Tak
会議室デビュー日: 2008/10/04
投稿数: 9
投稿日時: 2008-10-18 03:15
ご返答有難う御座います。

自動バックアップの目的は、担当者全員にTFTPサーバへのマニュアルバックアップを徹底させることが困難だからです。
機器が世界中に分散しており、また管理者の人種も多岐に渡るものですから、どうしても管理状況が煩雑になってしまいます。(私の管理能力不足と言えばそれまでですが。。。)
そういった背景から、ログとバックアップファイルで過去の変更記録を管理したいと考えた次第です。
したがって、パスワードの変更も困難な状態です。

本筋から少しずれてしまいましたが、別の方法を考えることとします。
ESX3CNK3T5
会議室デビュー日: 2007/09/21
投稿数: 18
投稿日時: 2008-10-28 18:49
$はシェル変数のプレフィクスでありexpect変数のプレフィクスでもあるので
2回エスケープしないといけません。

\\\$
rain
ぬし
会議室デビュー日: 2006/10/19
投稿数: 549
投稿日時: 2008-10-28 19:14
引用:

Takさんの書き込み (2008-10-18 03:15) より:
ご返答有難う御座います。

自動バックアップの目的は、担当者全員にTFTPサーバへのマニュアルバックアップを徹底させることが困難だからです。
機器が世界中に分散しており、また管理者の人種も多岐に渡るものですから、どうしても管理状況が煩雑になってしまいます。(私の管理能力不足と言えばそれまでですが。。。)
そういった背景から、ログとバックアップファイルで過去の変更記録を管理したいと考えた次第です。
したがって、パスワードの変更も困難な状態です。

本筋から少しずれてしまいましたが、別の方法を考えることとします。


話を聞いた限りだと、定期的にバックアップをとるというよりは、変更(および変更内容)を検出できるといいのかな? と思いました。Tripwire とか。
1

スキルアップ/キャリアアップ(JOB@IT)