こんにちは。私は、サーバーからネットワークデバイスにアップデートされたIOSを送信できるスクリプトを作成/実行しようとしています。次のコードは、 ":flash"コマンドの直前に手動IPアドレスを入力すると機能します。期待通りのbashでSCP経由でIOSをアップデートする
#!/user/bin/expect
set IOSroot "/xxxxx/xxx/c3750e-universalk9-mz.150-2.SE10a.bin"
set pw xxxxxxxxxxxxxxxxxxx
spawn scp $IOSroot 1.1.1.1:flash:/c3750e-universalk9-mz.150-2.SE10a.bin
expect "TACACS Password:"
send "$pw\r"
interact
このコードは素晴らしいと期待されています。この問題は、 "ioshost"というファイルをIPのリストとともに使用し、このスクリプト内でそれを使用して自動化を行うときに発生します。私はこれを働かせるために様々なことを試みました。次のようにそれらのいくつかは、次のとおりです。
設定変数のコマンドを実行します/読み込みを使用しようとしているとともに
IPHosts=$(cat ioshost)
set IPHost 'cat ioshost'
を...
while read line; do
spawn scp $IOSroot $line:flash:/c3750e-universalk9-mz.150-2.SE10a.bin
done < ioshost
これらのどれも動作するようには思えませんし、私が探していますガイダンスのために。パスワードの設定はベストプラクティスではなく、他の記事に記載されているようにRSAキーを設定することは許可されていないので、私はこのようにしなければなりません。
ありがとうございます。
をあなたが得るものはあなたが期待しているものですか?私は "$ IOSroot"展開と "$ line"を引用します。私は "IFS = read -r line"の間にも使用します。しかし、これらは実際のデータに応じて問題ではないかもしれません。 – Fred
また、scp(IP:flash:/ ...)に使用している構文にも慣れていません。私はuser @ host:/ pathに慣れています。私はそれを理解するのを助けてくれますか? – Fred
私が実行しているSCPの部分は、IOSがJUMPサーバー上でロードされている場所を識別するシンタックスです。次に、2番目の部分がターゲットデバイスであり、送信先のパスです。 – kuroikenshi