ゾーニングを実行したいBrocadeFCスイッチがあります。行が多すぎて通常の対話型セッションにコピーアンドペーストできないビルドファイルがあり、スイッチとUNIX管理サーバー間で事前共有キーを使用してsshを設定しています。私は期待を持っていませんし、ストレートsshとbashに固執したいと思います。
コマンドを個別に送信しようとしましたが、各sshコマンドが個別のセッションであり、セッションがドロップされるとすぐにコミットされていないすべてのコマンドがフラッシュされるため、失敗します。
私はこれを試しました:
cat testbuildfile | ssh -tt user@switch
ビルドファイル内のすべてのコマンドを実行するという点でほぼ機能しますが、終了すると使用できないBrocadeのセッションが残ります。 Brocadeコマンドプロンプトがありますが、何かを入力するとハングし、UNIXサーバーに戻るためにctrl-cを実行する必要があります。
Commitコマンドをビルドファイルに入れることができることは知っていますが、コミットする前に作業をチェックして検証する機会があります。理想的には、コマンドファイルを実行してから、開始したセッションにログインしたままにして、コマンドを確認してから手動でコミットするようにします。これはできますか?
編集:Brocadeスイッチでスクリプトを実行することは、保証が無効になる昇格されたシェルなしでは不可能です。
そうです-sshセッションでstdinをハイジャックし、端末に接続されなくなりました。コマンドストリームにquit
を追加しない限り、ハングします。
代わりにこの魔法を試してください:
#!/bin/bash
Host=blch1-sw3
session=$Host.$$
CR="$(echo -e '\r')"
screen -d -m -S $session
screen -S $session -p 0 -X zombie kr
screen -S $session -p 0 -X hardstatus alwayslastline
screen -S $session -p 0 -X hardstatus string "$Host config change 3.14159"
screen -S $session -p 0 -X stuff "exec ssh -l USERID $Host$CR"
sleep 2
screen -S $session -p 0 -X stuff "PASSW0RD$CR"
sleep 5
screen -S $session -p 0 -X stuff "version$CR"
sleep 2
screen -S $session -p 0 -X stuff "# Changes complete - commit or abort$CR"
screen -x $session