Bash について
Cisco NX-OS CLI に加えて、Cisco Nexus シリーズ スイッチは Bourne-Again SHell(Bash)へのアクセスをサポートします。Bash は、ユーザーが入力したコマンドまたはシェル スクリプトから読み取られたコマンドを解釈します。Bash を使用すると、デバイス上の基盤となる Linux システムにアクセスしてシステムを管理できます。
この製品のドキュメントセットは、偏向のない言語を使用するように配慮されています。このドキュメントセットでの偏向のない言語とは、年齢、障害、性別、人種的アイデンティティ、民族的アイデンティティ、性的指向、社会経済的地位、およびインターセクショナリティに基づく差別を意味しない言語として定義されています。製品ソフトウェアのユーザインターフェイスにハードコードされている言語、RFP のドキュメントに基づいて使用されている言語、または参照されているサードパーティ製品で使用されている言語によりドキュメントに例外が存在する場合があります。シスコのインクルーシブ ランゲージの取り組みの詳細は、こちらをご覧ください。
このドキュメントは、米国シスコ発行ドキュメントの参考和訳です。リンク情報につきましては、日本語版掲載時点で、英語版にアップデートがあり、リンク先のページが移動/変更されている場合がありますことをご了承ください。あくまでも参考和訳となりますので、正式な内容については米国サイトのドキュメントを参照ください。
Cisco NX-OS CLI に加えて、Cisco Nexus シリーズ スイッチは Bourne-Again SHell(Bash)へのアクセスをサポートします。Bash は、ユーザーが入力したコマンドまたはシェル スクリプトから読み取られたコマンドを解釈します。Bash を使用すると、デバイス上の基盤となる Linux システムにアクセスしてシステムを管理できます。
Bash シェルには、次の注意事項と制約事項があります。
インターフェイスのリンクローカル アドレスを定義すると、Netstack はカーネルのネット デバイスに /64 プレフィックスをインストールします。
新しいリンクローカル アドレスがカーネルで構成されると、カーネルはカーネル ルーティング テーブルに /64 ルートをインストールします。
ピア ボックスのインターフェイスに、同じ /64 サブネットに属するリンクローカル アドレスが設定されていない場合、bash プロンプトからの ping は成功しません。Cisco NX-OS のping は正常に動作します。
/isan フォルダ内のバイナリは、run bash コマンドで入るシェルの環境とは異なるようにセットアップされた環境で実行するためのものです。Bash シェルからこれらのバイナリを使用しないことをお勧めします。その環境内での動作は予測できないからです。
Cisco Python モジュールをインポートする場合は、Bash シェルから Python を使用しないでください。代わりに NX-OS VSH 内で、より新しい Python を使用します。
一部のプロセスおよび show コマンドでは、大量の出力が発生する可能性があります。スクリプトを実行していて、実行時間の長い出力を終了する必要がある場合は、Ctrl+C(Ctrl+Z ではなく)を使用してコマンド出力を終了します。Ctrl+Z を使用すると、このキー コマンドによって SIGCONT(信号継続)メッセージが生成され、スクリプトが停止する可能性があります。SIGCONT メッセージによって停止されたスクリプトは、動作を再開するためにユーザーの介入が必要です。
Cisco NX-OS では、Cisco NX-OS dev-ops ロールまたは Cisco NX-OS network-admin ロールに関連付けられたユーザ アカウントから Bash にアクセスできます。
次の例は、dev-ops ロールと network-admin ロールの権限を示しています。
switch# show role name dev-ops
Role: dev-ops
Description: Predefined system role for devops access. This role
cannot be modified.
Vlan policy: permit (default)
Interface policy: permit (default)
Vrf policy: permit (default)
-------------------------------------------------------------------
Rule Perm Type Scope Entity
-------------------------------------------------------------------
4 permit command conf t ; username *
3 permit command bcm module *
2 permit command run bash *
1 permit command python *
switch# show role name network-admin
Role: network-admin
Description: Predefined network admin role has access to all commands
on the switch
-------------------------------------------------------------------
Rule Perm Type Scope Entity
-------------------------------------------------------------------
1 permit read-write
switch#
feature bash-shell コマンドを実行すると、Bash が有効になります。
この run bash コマンドは Bash を読み込み、ユーザーのホーム ディレクトリから開始します。
次の例は、Bash シェル機能を有効にする方法と、Bash を実行する方法を示しています。
switch# configure terminal
switch(config)# feature bash-shell
switch# run?
run Execute/run program
run-script Run shell scripts
switch# run bash?
bash Linux-bash
switch# run bash
bash-4.2$ whoami
admin
bash-4.2$ pwd
/bootflash/home/admin
bash-4.2$
(注) |
run bash コマンド で Bash コマンドを実行することもできます。 たとえば、run bash コマンド を使用して whoami を実行することもできます。
ユーザー shelltype を構成して Bash を実行することもできます。
このコマンドにより、ログイン時に Bash シェルを直接実行できるようになります。この場合、feature bash-shell を有効にする必要はありません。 |
管理者ユーザーの特権は、ルート アクセスの特権をエスカレーションできます。
以下は、権限をエスカレーションするためのガイドラインです:
管理者権限ユーザー(network-admin/vdc-admin)は、NX-OS における、Linux の root 権限ユーザーに相当します。
認証された管理者ユーザーのみが権限を root に昇格できます。認証された管理者権限ユーザーにパスワードは必要ありません。*
権限をエスカレーションする前に、Bash を有効にする必要があります。
非管理インターフェイスを介した root
ユーザー名を使用したスイッチへの SSH では、root ユーザーの Linux Bash シェル タイプ アクセスがデフォルトになります。NX-OS シェル アクセスに戻るために vsh を入力します。
* Cisco NX-OS リリース 9.2(3) 以降では、管理者(ネットワーク管理者ロールを持つユーザー)の特権ユーザーであっても、一部の使用例でパスワードプロンプトが必要な場合は、system security hardening sudo prompt-password コマンドを入力します。
NX-OS ネットワーク管理者ユーザーは、次の場合に root にエスカレーションして、構成コマンドを NX-OS VSH に渡す必要があります。
NX-OS ユーザーはシェルタイプの Bash を使用し、シェルタイプの Bash を使用してスイッチにログインします。
Bash でスイッチにログインした NX-OS ユーザーは、引き続きスイッチで Bash を使用します。
sudo su 'vsh -c "<configuration commands>"' または sudo bash -c 'vsh -c "<configuration commands>"' を実行します。
ssh -l MyUser 1.2.3.4
-bash-4.2$ sudo vsh -c "configure terminal ; interface eth1/2 ; shutdown ; sleep 2 ; show interface eth1/2 brief"
--------------------------------------------------------------------------------
Ethernet VLAN Type Mode Status Reason Speed Port
Interface Ch #
--------------------------------------------------------------------------------
Eth1/2 -- eth routed down Administratively down auto(D) --
次の例は、デフォルトのシェルタイプが Bash であるネットワーク管理者ユーザー MyUser が、NX-OS に入り、NX-OS で Bash を実行する方法を示しています。
ssh -l MyUser 1.2.3.4
-bash-4.2$ vsh -h
Cisco NX-OS Software
Copyright (c) 2002-2016, Cisco Systems, Inc. All rights reserved.
Nexus 9000v software ("Nexus 9000v Software") and related documentation,
files or other reference materials ("Documentation") are
the proprietary property and confidential information of Cisco
Systems, Inc. ("Cisco") and are protected, without limitation,
pursuant to United States and International copyright and trademark
laws in the applicable jurisdiction which provide civil and criminal
penalties for copying or distribution without Cisco's authorization.
Any use or disclosure, in whole or in part, of the Nexus 9000v Software
or Documentation to any third party for any purposes is expressly
prohibited except as otherwise authorized by Cisco in writing.
The copyrights to certain works contained herein are owned by other
third parties and are used and distributed under license. Some parts
of this software may be covered under the GNU Public License or the
GNU Lesser General Public License. A copy of each such license is
available at
http://www.gnu.org/licenses/gpl.html and
http://www.gnu.org/licenses/lgpl.html
***************************************************************************
* Nexus 9000v is strictly limited to use for evaluation, demonstration *
* and NX-OS education. Any use or disclosure, in whole or in part of *
* the Nexus 9000v Software or Documentation to any third party for any *
* purposes is expressly prohibited except as otherwise authorized by *
* Cisco in writing. *
***************************************************************************
switch# run bash
bash-4.2$ vsh -c "configure terminal ; interface eth1/2 ; shutdown ; sleep 2 ; show interface eth1/2 brief"
--------------------------------------------------------------------------------
Ethernet VLAN Type Mode Status Reason Speed Port
Interface Ch #
--------------------------------------------------------------------------------
Eth1/2 -- eth routed down Administratively down auto(D) --
(注) |
sudo su - は使用しないでください。使用すると、システムがハングします。 |
次の例は、特権を root にエスカレーションする方法と、エスカレーションを確認する方法を表示しています。
switch# run bash
bash-4.2$ sudo su root
bash-4.2# whoami
root
bash-4.2# exit
exit
このセクションには、Bash コマンドと出力の例が含まれています。
次の例は、システム統計情報の表示方法を示しています:
switch# run bash
bash-4.2$ cat /proc/meminfo
<snip>
MemTotal: 16402560 kB
MemFree: 14098136 kB
Buffers: 11492 kB
Cached: 1287880 kB
SwapCached: 0 kB
Active: 1109448 kB
Inactive: 717036 kB
Active(anon): 817856 kB
Inactive(anon): 702880 kB
Active(file): 291592 kB
Inactive(file): 14156 kB
Unevictable: 0 kB
Mlocked: 0 kB
SwapTotal: 0 kB
SwapFree: 0 kB
Dirty: 32 kB
Writeback: 0 kB
AnonPages: 527088 kB
Mapped: 97832 kB
<\snip>
次に、run bashコマンド を使用して Bash から ps を実行する例を示します。
switch# run bash ps -el
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
4 S 0 1 0 0 80 0 - 528 poll_s ? 00:00:03 init
1 S 0 2 0 0 80 0 - 0 kthrea ? 00:00:00 kthreadd
1 S 0 3 2 0 80 0 - 0 run_ks ? 00:00:56 ksoftirqd/0
1 S 0 6 2 0 -40 - - 0 cpu_st ? 00:00:00 migration/0
1 S 0 7 2 0 -40 - - 0 watchd ? 00:00:00 watchdog/0
1 S 0 8 2 0 -40 - - 0 cpu_st ? 00:00:00 migration/1
1 S 0 9 2 0 80 0 - 0 worker ? 00:00:00 kworker/1:0
1 S 0 10 2 0 80 0 - 0 run_ks ? 00:00:00 ksoftirqd/1
機能 RPM の管理
RPM をインストールまたは追加する前に、次の手順によりシステムの準備ができていることを確認します。
コマンドまたはアクション | 目的 | |
---|---|---|
ステップ 1 |
switch# show logging logfile | grep -i "System ready" |
Bash を実行する前に、この手順によって、RPM をインストールまたは追加する前のシステムの準備ができていることを確認します。 以下のような出力が表示されれば、続行します。 2018 Mar 27 17:24:22 switch %ASCII-CFG-2-CONF_CONTROL: System ready |
ステップ 2 |
switch# run bash sudo su 例:
|
Bash をロードします。 |
コマンドまたはアクション | 目的 | |
---|---|---|
ステップ 1 |
sudo dnf installed | grep platform |
スイッチにインストールされている NX-OS 機能 RPM のリストを表示します。 |
ステップ 2 |
dnf list available |
使用可能な RPM のリストを表示します。 |
ステップ 3 |
sudo dnf -y install rpm |
使用可能な RPM をインストールします。 |
次に、bfd RPM をインストールする例を示します。
bash-4.2$ dnf list installed | grep n9000
base-files.n9000 3.0.14-r74.2 installed
bfd.lib32_n9000 1.0.0-r0 installed
core.lib32_n9000 1.0.0-r0 installed
eigrp.lib32_n9000 1.0.0-r0 installed
eth.lib32_n9000 1.0.0-r0 installed
isis.lib32_n9000 1.0.0-r0 installed
lacp.lib32_n9000 1.0.0-r0 installed
linecard.lib32_n9000 1.0.0-r0 installed
lldp.lib32_n9000 1.0.0-r0 installed
ntp.lib32_n9000 1.0.0-r0 installed
nxos-ssh.lib32_n9000 1.0.0-r0 installed
ospf.lib32_n9000 1.0.0-r0 installed
perf-cisco.n9000_gdb 3.12-r0 installed
platform.lib32_n9000 1.0.0-r0 installed
shadow-securetty.n9000_gdb 4.1.4.3-r1 installed
snmp.lib32_n9000 1.0.0-r0 installed
svi.lib32_n9000 1.0.0-r0 installed
sysvinit-inittab.n9000_gdb 2.88dsf-r14 installed
tacacs.lib32_n9000 1.0.0-r0 installed
task-nxos-base.n9000_gdb 1.0-r0 installed
tor.lib32_n9000 1.0.0-r0 installed
vtp.lib32_n9000 1.0.0-r0 installed
bash-4.2$ dnf list available
bgp.lib32_n9000 1.0.0-r0
bash-4.2$ sudo dnf -y install bfd
(注) |
起動時のスイッチのリロード時に、永続的な RPM のため、dnf の代わりに rpm コマンドを使用します。そうしなかった場合、最初に dnf bash または install cli を使用してインストールされた RPM は、 |
dnf リポジトリに RPM の上位バージョンが存在する必要があります。
コマンドまたはアクション | 目的 |
---|---|
sudo dnf -y upgraderpm |
インストールされている RPM をアップグレードします。 |
次に、bfd RPM のアップグレードの例を示します。
bash-4.2$ sudo dnf -y upgrade bfd
コマンドまたはアクション | 目的 |
---|---|
sudo dnf -y downgraderpm |
いずれかの dnf リポジトリに下位バージョンの RPM がある場合に、RPM をダウングレードします。 |
次に、bfd RPM をダウングレードする例を示します。
bash-4.2$ sudo dnf -y downgrade bfd
(注) |
SNMP RPM および NTP RPM は保護されており、消去できません。 これらの RPM をアップグレードまたはダウングレードすることはできます。アップグレードまたはダウングレードを有効にするには、システムのリロードが必要です。 保護された RPM のリストについては、/etc/dnf/protected.d/protected_pkgs.conf を参照してください。 |
コマンドまたはアクション | 目的 |
---|---|
sudo dnf -y eraserpm |
RPM を消去します。 |
次の例は、bfd RPM を消去する方法を示しています。
bash-4.2$ sudo dnf -y erase bfd
NX-OS リリース 9.3(1) 以降、Cisco NX-OS イメージは DME のモジュール性をサポートします。これは、スイッチの RPM マネージャとの相互運用により、DME RPM の非侵入型アップグレードまたはダウングレードを可能にします。非侵入型のアップグレードまたはダウングレードにより、システムの再起動を実行せずに RPM をインストールできます。また、DME データベースに構成が含まれている他のアプリケーションが妨害されるのを防ぐことができます。DME のモジュール性を使用すると、ISSU やシステムのリロードを行わずに、モデルの変更をスイッチに適用できます。
(注) |
DME RPM をロードした後、VSH を再起動して新しい MO のクエリを有効にする必要があります。 |
デフォルトでは、NX-OS リリース 9.3(1) にアップグレードすると、必須のアップグレード可能 RPM パッケージであるベース DME RPM がインストールされ、アクティブになります。DME RPM は、RPM ファイルのデフォルト インストール
ディレクトリ(/rpms
)にインストールされます。
コードまたはモデルを変更する場合は、DME RPM をインストールする必要があります。インストールするには、install コマンドを使用する NX-OS RPM マネージャ、または dnf などの標準 RPM ツールを使用します。dnf を使用する場合は、スイッチの Bash シェルにアクセスする必要があります。
ステップ 1 |
copy path-to-dme-rpm bootflash: [//sup-#][ /path] 例:
SCP を使用して DME RPM をブートフラッシュにコピーします。 |
ステップ 2 |
DME RPM をインストールまたはアップグレードするには、次のいずれかの方法を選択します。 NX-OS の install コマンドを使用するには、次のコマンドを実行します。
dnf install を使用するには、次のコマンドを実行します。
|
NX-OS show install コマンドまたは dnf list を使用して、DME RPM がインストールされているかどうかを確認できます。
方法を選択します。
|
スイッチ上の(ローカル)リポジトリを照会して、RPM が存在するかどうかを確認できます。
ステップ 1 |
run bash 例:
スイッチの Bash シェルにログインします。 |
ステップ 2 |
ls /bootflash/.rpmstore/patching/localrepo/dme-2.0.1.0-9.3.1.lib32_n9000.rpm 例:
ベース DME RPM がインストールされている場合は、 |
NX-OS コマンド install または dnf を使用して、DME RPM の上位バージョンから下位バージョンにダウングレードできます。ダウングレードすることで、DME のモジュラリティ機能が保持されます。
DME RPM は保護されているため、install deactivate と install remove はサポートされていません。
ダウングレード方法を選択します。
この例では、DME RPM がバージョン 2.0.1.0-9.3.1 にダウングレードされました。 dnf の場合、root ユーザー(run bash sudo su )として Bash シェルでコマンドを実行する必要があります。
|
NX-OS の install コマンドを使用してベース DME RPM をインストールするか、または dnf downgrade を使用して、上位バージョンの DME RPM からベース DME RPM にダウングレードできます。
ダウングレード方法を選択します。
dnf の場合、root ユーザー(run bash sudo su )として Bash シェルでコマンドを実行する必要があります。
|
パッチ RPM の管理
RPM をインストールまたは追加する前に、次の手順によりシステムの準備ができていることを確認します。
コマンドまたはアクション | 目的 | |
---|---|---|
ステップ 1 |
switch# show logging logfile | grep -i "System ready" |
Bash を実行する前に、この手順によって、RPM をインストールまたは追加する前のシステムの準備ができていることを確認します。 以下のような出力が表示されれば、続行します。 2018 Mar 27 17:24:22 switch %ASCII-CFG-2-CONF_CONTROL: System ready |
ステップ 2 |
switch# run bash sudo su 例:
|
Bash をロードします。 |
コマンドまたはアクション | 目的 | |
---|---|---|
ステップ 1 |
dnf list --patch-only |
スイッチに存在するパッチ RPM のリストを表示します。 |
ステップ 2 |
sudo dnf install --add URL_of_patch |
リポジトリにパッチを追加します。ここで URL_of_patch は、標準的な Linux 形式の /bootflash/patch などではなく、bootflash:/patch などの明確に定義された形式です。 |
ステップ 3 |
dnf list --patch-only available |
リポジトリに追加されているものの非アクティブ状態のパッチのリストを表示します。 |
次に、nxos.CSCab00001-n9k_ALL-1.0.0-7.0.3.I7.3.lib32_n9000 RPM をインストールする例を示します。
bash-4.2# dnf list --patch-only
Loaded plugins: downloadonly, importpubkey, localrpmDB, patchaction, patching,
: protect-packages
groups-repo | 1.1 kB 00:00 ...
localdb | 951 B 00:00 ...
patching | 951 B 00:00 ...
thirdparty | 951 B 00:00 ...
bash-4.2#
bash-4.2# sudo dnf install --add bootflash:/nxos.CSCab00001-n9k_ALL-1.0.0-7.0.3.I7.3.lib32_n9000.rpm
Loaded plugins: downloadonly, importpubkey, localrpmDB, patchaction, patching,
: protect-packages
groups-repo | 1.1 kB 00:00 ...
localdb | 951 B 00:00 ...
patching | 951 B 00:00 ...
thirdparty | 951 B 00:00 ...
[############## ] 70%Install operation 135 completed successfully at Tue Mar 27 17:45:34 2018.
[####################] 100%
bash-4.2#
パッチ RPM がインストールされたら、正しくインストールされたことを確認します。次のコマンドは、リポジトリに追加され、非アクティブ状態のパッチのリストを表示します。
bash-4.2# dnf list --patch-only available
Loaded plugins: downloadonly, importpubkey, localrpmDB, patchaction, patching,
: protect-packages
groups-repo | 1.1 kB 00:00 ...
localdb | 951 B 00:00 ...
patching | 951 B 00:00 ...
thirdparty | 951 B 00:00 ...
nxos.CSCab00001-n9k_ALL.lib32_n9000 1.0.0-7.0.3.I7.3 patching
bash-4.2#
RPM がバンドルされている tar ファイルを使用して、tar ファイルからリポジトリにパッチを追加することもできます。次に、nxos.CSCab00002_CSCab00003-n9k_ALL-1.0.0-7.0.3.I7.3.lib32_n9000 tar ファイルに含まれる 2 つの RPM をパッチ リポジトリに追加する例を示します。
bash-4.2# sudo dnf install --add bootflash:/nxos.CSCab00002_CSCab00003-n9k_ALL-1.0.0-7.0.3.I7.3.lib32_n9000.tar
Loaded plugins: downloadonly, importpubkey, localrpmDB, patchaction, patching,
: protect-packages
groups-repo | 1.1 kB 00:00 ...
localdb | 951 B 00:00 ...
patching | 951 B 00:00 ...
thirdparty | 951 B 00:00 ...
[############## ] 70%Install operation 146 completed successfully at Tue Mar 27 21:17:39 2018.
[####################] 100%
bash-4.2#
bash-4.2# dnf list --patch-only
Loaded plugins: downloadonly, importpubkey, localrpmDB, patchaction, patching,
: protect-packages
groups-repo | 1.1 kB 00:00 ...
localdb | 951 B 00:00 ...
patching | 951 B 00:00 ...
patching/primary | 942 B 00:00 ...
patching 2/2
thirdparty | 951 B 00:00 ...
nxos.CSCab00003-n9k_ALL.lib32_n9000 1.0.0-7.0.3.I7.3 patching
nxos.CSCab00002-n9k_ALL.lib32_n9000 1.0.0-7.0.3.I7.3 patching
bash-4.2#
コマンドまたはアクション | 目的 | ||
---|---|---|---|
sudo dnf install patch_RPM --nocommit |
パッチ RPM をアクティブにします。ここで、patch_RPM はリポジトリにあるパッチです。この手順では、パッチの場所を指定しないでください。
|
次に、nxos.CSCab00001-n9k_ALL-1.0.0-7.0.3.I7.3.lib32_n9000 パッチ RPM をアクティブにする例を示します。
bash-4.2# sudo dnf install nxos.CSCab00001-n9k_ALL-1.0.0-7.0.3.I7.3.lib32_n9000 --nocommit
Loaded plugins: downloadonly, importpubkey, localrpmDB, patchaction, patching,
: protect-packages
groups-repo | 1.1 kB 00:00 ...
localdb | 951 B 00:00 ...
patching | 951 B 00:00 ...
thirdparty | 951 B 00:00 ...
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package nxos.CSCab00001-n9k_ALL.lib32_n9000 0:1.0.0-7.0.3.I7.3 will be installed
--> Finished Dependency Resolution
Dependencies Resolved
===================================================================================
Package Arch Version Repository Size
===================================================================================
Installing:
nxos.CSCab00001-n9k_ALL lib32_n9000 1.0.0-7.0.3.I7.3 patching 28 k
Transaction Summary
===================================================================================
Install 1 Package
Total download size: 28 k
Installed size: 82 k
Is this ok [y/N]: y
Downloading Packages:
Running Transaction Check
Running Transaction Test
Transaction Test Succeeded
Running Transaction
Installing : nxos.CSCab00001-n9k_ALL-1.0.0-7.0.3.I7.3.lib32_n9000 1/1
[################## ] 90%error: reading /var/sysmgr/tmp/patches/CSCab00001-n9k_ALL/isan/bin/sysinfo manifest, non-printable characters found
Installed:
nxos.CSCab00001-n9k_ALL.lib32_n9000 0:1.0.0-7.0.3.I7.3
Complete!
Install operation 140 completed successfully at Tue Mar 27 18:07:40 2018.
[####################] 100%
bash-4.2#
次のコマンドを入力して、パッチ RPM が正常にアクティブ化されたことを確認します。
bash-4.2# dnf list --patch-only
Loaded plugins: downloadonly, importpubkey, localrpmDB, patchaction, patching,
: protect-packages
groups-repo | 1.1 kB 00:00 ...
localdb | 951 B 00:00 ...
patching | 951 B 00:00 ...
thirdparty | 951 B 00:00 ...
nxos.CSCab00001-n9k_ALL.lib32_n9000 1.0.0-7.0.3.I7.3 installed
bash-4.2#
コマンドまたはアクション | 目的 |
---|---|
sudo dnf install patch_RPM --commit |
パッチ RPM をコミットします。パッチ RPM は、リロード後もアクティブな状態を維持するためにコミットする必要があります。 |
次に、nxos.CSCab00001-n9k_ALL-1.0.0-7.0.3.I7.3.lib32_n9000 パッチ RPM をコミットする例を示します。
bash-4.2# sudo dnf install nxos.CSCab00001-n9k_ALL-1.0.0-7.0.3.I7.3.lib32_n9000 --commit
Loaded plugins: downloadonly, importpubkey, localrpmDB, patchaction, patching,
: protect-packages
groups-repo | 1.1 kB 00:00 ...
localdb | 951 B 00:00 ...
patching | 951 B 00:00 ...
thirdparty | 951 B 00:00 ...
Install operation 142 completed successfully at Tue Mar 27 18:13:16 2018.
[####################] 100%
bash-4.2#
次のコマンドを入力して、パッチ RPM が正常にコミットされたことを確認します。
bash-4.2# dnf list --patch-only committed
Loaded plugins: downloadonly, importpubkey, localrpmDB, patchaction, patching,
: protect-packages
groups-repo | 1.1 kB 00:00 ...
localdb | 951 B 00:00 ...
patching | 951 B 00:00 ...
thirdparty | 951 B 00:00 ...
nxos.CSCab00001-n9k_ALL.lib32_n9000 1.0.0-7.0.3.I7.3 installed
bash-4.2#
コマンドまたはアクション | 目的 | |||
---|---|---|---|---|
ステップ 1 |
sudo dnf erase patch_RPM --nocommit |
パッチ RPM を非アクティブ化します。
|
||
ステップ 2 |
sudo dnf install patch_RPM --commit |
パッチ RPM をコミットします。パッチ RPM をコミットしないまま削除しようとすると、エラーメッセージが表示されます。 |
次に、nxos.CSCab00001-n9k_ALL-1.0.0-7.0.3.I7.3.lib32_n9000 パッチ RPM を非アクティブにする例を示します。
bash-4.2# sudo dnf erase nxos.CSCab00001-n9k_ALL-1.0.0-7.0.3.I7.3.lib32_n9000 --nocommit
Loaded plugins: downloadonly, importpubkey, localrpmDB, patchaction, patching,
: protect-packages
Setting up Remove Process
Resolving Dependencies
--> Running transaction check
---> Package nxos.CSCab00001-n9k_ALL.lib32_n9000 0:1.0.0-7.0.3.I7.3 will be erased
--> Finished Dependency Resolution
Dependencies Resolved
===================================================================================
Package Arch Version Repository Size
===================================================================================
Removing:
nxos.CSCab00001-n9k_ALL lib32_n9000 1.0.0-7.0.3.I7.3 @patching 82 k
Transaction Summary
===================================================================================
Remove 1 Package
Installed size: 82 k
Is this ok [y/N]: y
Downloading Packages:
Running Transaction Check
Running Transaction Test
Transaction Test Succeeded
Running Transaction
[###### ] 30%error: reading /var/sysmgr/tmp/patches/CSCab00001-n9k_ALL/isan/bin/sysinfo manifest, non-printable characters found
Erasing : nxos.CSCab00001-n9k_ALL-1.0.0-7.0.3.I7.3.lib32_n9000 1/1
[################## ] 90%
Removed:
nxos.CSCab00001-n9k_ALL.lib32_n9000 0:1.0.0-7.0.3.I7.3
Complete!
Install operation 143 completed successfully at Tue Mar 27 21:03:47 2018.
[####################] 100%
bash-4.2#
パッチ RPM は、非アクティブ化した後にコミットする必要があります。パッチ RPM を非アクティブ化した後にコミットしなかった場合に、パッチ RPM の削除 の手順を使用してパッチ RPM を削除しようとすると、エラー メッセージが表示されます。
bash-4.2# sudo dnf install nxos.CSCab00001-n9k_ALL-1.0.0-7.0.3.I7.3.lib32_n9000 --commit
Loaded plugins: downloadonly, importpubkey, localrpmDB, patchaction, patching,
: protect-packages
groups-repo | 1.1 kB 00:00 ...
localdb | 951 B 00:00 ...
patching | 951 B 00:00 ...
thirdparty | 951 B 00:00 ...
Install operation 144 completed successfully at Tue Mar 27 21:09:28 2018.
[####################] 100%
bash-4.2#
次のコマンドを入力して、パッチ RPM が正常にコミットされたことを確認します。
bash-4.2# dnf list --patch-only
Loaded plugins: downloadonly, importpubkey, localrpmDB, patchaction, patching,
: protect-packages
groups-repo | 1.1 kB 00:00 ...
localdb | 951 B 00:00 ...
patching | 951 B 00:00 ...
thirdparty | 951 B 00:00 ...
nxos.CSCab00001-n9k_ALL.lib32_n9000 1.0.0-7.0.3.I7.3 patching
bash-4.2#
コマンドまたはアクション | 目的 |
---|---|
sudo dnf install --remove patch_RPM |
非アクティブなパッチ RPM を削除します。 |
次に、nxos.CSCab00001-n9k_ALL-1.0.0-7.0.3.I7.3.lib32_n9000 パッチ RPM を削除する例を示します。
bash-4.2# sudo dnf install --remove nxos.CSCab00001-n9k_ALL-1.0.0-7.0.3.I7.3.lib32_n9000
Loaded plugins: downloadonly, importpubkey, localrpmDB, patchaction, patching,
: protect-packages
groups-repo | 1.1 kB 00:00 ...
localdb | 951 B 00:00 ...
patching | 951 B 00:00 ...
thirdparty | 951 B 00:00 ...
[########## ] 50%Install operation 145 completed successfully at Tue Mar 27 21:11:05 2018.
[####################] 100%
bash-4.2#
(注) |
パッチ RPM を削除しようとした後に、次のエラーメッセージが表示されたとします。 Install operation 11 "failed because patch was not committed". at Wed Mar 28 22:14:05 2018 これは、削除を試みる前にパッチ RPM をコミットしていなかったことを意味しています。パッチ RPM を削除する前にコミットする手順については、パッチ RPM の非アクティブ化 を参照してください。 |
次のコマンドを入力して、非アクティブなパッチ RPM が正常に削除されたことを確認します。
bash-4.2# dnf list --patch-only
Loaded plugins: downloadonly, importpubkey, localrpmDB, patchaction, patching,
: protect-packages
groups-repo | 1.1 kB 00:00 ...
localdb | 951 B 00:00 ...
patching | 951 B 00:00 ...
patching/primary | 197 B 00:00 ...
thirdparty | 951 B 00:00 ...
bash-4.2#
アプリケーションには、/etc/init.d/application_name
にインストールされる起動 Bash スクリプトが必要です。この起動 Bash スクリプトは、次の一般的な形式にする必要があります(この形式の詳細については、http://linux.die.net/man/8/chkconfigを参照してください)。
#!/bin/bash
#
# <application_name> Short description of your application
#
# chkconfig: 2345 15 85
# description: Short description of your application
#
### BEGIN INIT INFO
# Provides: <application_name>
# Required-Start: $local_fs $remote_fs $network $named
# Required-Stop: $local_fs $remote_fs $network
# Description: Short description of your application
### END INIT INFO
# See how we were called.
case "$1" in
start)
# Put your startup commands here
# Set RETVAL to 0 for success, non-0 for failure
;;
stop)
# Put your stop commands here
# Set RETVAL to 0 for success, non-0 for failure
;;
status)
# Put your status commands here
# Set RETVAL to 0 for success, non-0 for failure
;;
restart|force-reload|reload)
# Put your restart commands here
# Set RETVAL to 0 for success, non-0 for failure
;;
*)
echo $"Usage: $prog {start|stop|status|restart|force-reload}"
RETVAL=2
esac
exit $RETVAL
ステップ 1 |
作成したアプリケーション起動 Bash スクリプトを/etc/init.d/application_name にインストールします。 |
ステップ 2 |
/etc/init.d/application_name start でアプリケーションを開始します |
ステップ 3 |
chkconfig --add application_name を入力します |
ステップ 4 |
chkconfig --level 3 application_name on を入力します 実行レベル 3 は、標準のマルチユーザー実行レベルであり、スイッチが通常実行されるレベルです。 |
ステップ 5 |
chkconfig --list application_name を実行して、アプリケーションがレベル 3 で実行されるようにスケジュールされていることを確認し、レベル 3 が on に設定されていることを確認します。 |
ステップ 6 |
アプリケーションが /etc/rc3.d に記述されていることを確認します。次のような表示になるはずです。「S」の後に数字が続き、アプリケーション名(この例では tcollector)が続きます。../init.d/application_name には Bash 起動スクリプトへのリンクが表示されます。 |
lrwxrwxrwx 1 root root 20 Sep 25 22:56 /etc/rc3.d/S15tcollector -> ../init.d/tcollector
bash-4.2#
Cisco Nexus 9500 プラットフォーム スイッチは、通常、高可用性を提供するために 2 つのスーパーバイザ モジュール(1 つのアクティブ スーパーバイザ モジュールと 1 つのスタンバイ スーパーバイザ モジュール)で構成されています。各スーパーバイザ モジュールには、ファイル ストレージ用の独自のブートフラッシュ ファイル システムがあり、通常、アクティブ ブートフラッシュ ファイル システムとスタンバイ ブートフラッシュ ファイル システムは互いに独立しています。アクティブ ブートフラッシュに特定のコンテンツが必要な場合、将来スイッチオーバーが発生した場合に備えて、同じコンテンツがスタンバイ ブートフラッシュにも必要でしょう。
Cisco NX-OS 9.2(2) リリースより前は、アクティブ スーパーバイザ モジュールとスタンバイ スーパーバイザ モジュール間でこのようなコンテンツを手動で管理する必要がありました。Cisco NX-OS 9.2(2) 以降では、スタンバイ スーパーバイザ モジュールが up 状態で使用可能なら、アクティブ スーパーバイザ モジュールまたはアクティブ ブートフラッシュ(/bootflash)上の特定のファイルとディレクトリを、スタンバイ スーパーバイザ モジュールまたはスタンバイ ブートフラッシュ(/bootflash_sup-remote)に自動的に同期できます。同期するファイルとディレクトリを選択するには、スイッチに Bash をロードし、アクティブ ブートフラッシュからスタンバイ ブートフラッシュに同期するファイルとディレクトリを、編集可能ファイル /bootflash/bootflash_sync_list に追加します。
次に例を示します。
switch# run bash
bash-4.2# echo "/bootflash/home/admin" | sudo tee --append /bootflash/bootflash_sync_list
bash-4.2# echo "/bootflash/nxos.7.0.3.I7.3.5.bin" | sudo tee --append /bootflash/bootflash_sync_list
bash-4.2# cat /bootflash/bootflash_sync_list
/bootflash/home/admin
/bootflash/nxos.7.0.3.I7.3.5.bin
アクティブ ブートフラッシュのファイルまたはディレクトリに変更が加えられた場合、スタンバイ ブートフラッシュが up 状態で使用可能なら、これらの変更はスタンバイ ブートフラッシュに自動的に同期されます。スタンバイ ブートフラッシュが通常のブート、スイッチオーバー、または手動スタンバイ リロードのいずれかでリブートされた場合、スタンバイ スーパーバイザがオンラインになると、アクティブ ブートフラッシュへの変更のキャッチアップ同期がスタンバイ ブートフラッシュにプッシュされます。
次に、編集可能な /bootflash/bootflash_sync_list ファイルの特性と制限事項を示します。
/bootflash/bootflash_sync_list ファイルは、最初の実行時に自動的に作成されますが、最初の作成状態では空です。
/bootflash/bootflash_sync_list ファイルのエントリは、次の注意事項に従います。
1 行に 1 エントリ
エントリは Linux パスとして指定します(例:/bootflash/img.bin)
エントリは /bootflash ファイルシステム内にある必要があります
/bootflash/bootflash_sync_list ファイル自体は、自動的にスタンバイ ブートフラッシュに同期されます。copy virtual shell(VSH)コマンドを使用して、スーパーバイザ モジュールとの間で /bootflash/bootflash_sync_list ファイルを手動でコピーすることもできます。
次のコマンドを使用して、スーパーバイザ モジュールで直接 /bootflash/bootflash_sync_list ファイルを編集できます。
run bash vi /bootflash/bootflash_sync_list
同期イベントからのすべての出力は、ログファイル /var/tmp/bootflash_sync.log にリダイレクトされます。次のいずれかのコマンドを使用して、このログファイルを表示または追跡できます。
run bash less /var/tmp/bootflash_sync.log
run bash tail -f /var/tmp/bootflash_sync.log
同期スクリプトは、アクティブ ブートフラッシュ ディレクトリ上の対応するファイルの削除イベントを明示的に受信しない限り、スタンバイ ブートフラッシュ ディレクトリからファイルを削除しません。場合によっては、スタンバイ ブートフラッシュの使用中のスペースがアクティブ ブートフラッシュよりも多くなり、アクティブ ブートフラッシュと同期しているときにスタンバイ ブートフラッシュのスペースが不足することがあります。スタンバイ ブートフラッシュをアクティブ ブートフラッシュの正確なミラーにする(スタンバイ ブートフラッシュ上の余分なファイルを削除する)には、次のコマンドを入力します。
run bash sudo rsync -a --delete /bootflash/ /bootflash_sup-remote/
同期スクリプトは、クラッシュまたは終了することなく、バックグラウンドで実行され続ける必要があります。ただし、何らかの理由で実行が停止した場合は、次のコマンドを使用して手動で再起動できます。
run bash sudo /isan/etc/rc.d/rc.isan-start/S98bootflash_sync.sh start
次の例は、ネイティブ Bash シェルのアプリケーションを示しています。
bash-4.2# cat /etc/init.d/hello.sh
#!/bin/bash
PIDFILE=/tmp/hello.pid
OUTPUTFILE=/tmp/hello
echo $$ > $PIDFILE
rm -f $OUTPUTFILE
while true
do
echo $(date) >> $OUTPUTFILE
echo 'Hello World' >> $OUTPUTFILE
sleep 10
done
bash-4.2#
bash-4.2#
bash-4.2# cat /etc/init.d/hello
#!/bin/bash
#
# hello Trivial "hello world" example Third Party App
#
# chkconfig: 2345 15 85
# description: Trivial example Third Party App
#
### BEGIN INIT INFO
# Provides: hello
# Required-Start: $local_fs $remote_fs $network $named
# Required-Stop: $local_fs $remote_fs $network
# Description: Trivial example Third Party App
### END INIT INFO
PIDFILE=/tmp/hello.pid
# See how we were called.
case "$1" in
start)
/etc/init.d/hello.sh &
RETVAL=$?
;;
stop)
kill -9 `cat $PIDFILE`
RETVAL=$?
;;
status)
ps -p `cat $PIDFILE`
RETVAL=$?
;;
restart|force-reload|reload)
kill -9 `cat $PIDFILE`
/etc/init.d/hello.sh &
RETVAL=$?
;;
*)
echo $"Usage: $prog {start|stop|status|restart|force-reload}"
RETVAL=2
esac
exit $RETVAL
bash-4.2#
bash-4.2# chkconfig --add hello
bash-4.2# chkconfig --level 3 hello on
bash-4.2# chkconfig --list hello
hello 0:off 1:off 2:on 3:on 4:on 5:on 6:off
bash-4.2# ls -al /etc/rc3.d/*hello*
lrwxrwxrwx 1 root root 15 Sep 27 18:00 /etc/rc3.d/S15hello -> ../init.d/hello
bash-4.2#
bash-4.2# reboot
リロード後
bash-4.2# ps -ef | grep hello
root 8790 1 0 18:03 ? 00:00:00 /bin/bash /etc/init.d/hello.sh
root 8973 8775 0 18:04 ttyS0 00:00:00 grep hello
bash-4.2#
bash-4.2# ls -al /tmp/hello*
-rw-rw-rw- 1 root root 205 Sep 27 18:04 /tmp/hello
-rw-rw-rw- 1 root root 5 Sep 27 18:03 /tmp/hello.pid
bash-4.2# cat /tmp/hello.pid
8790
bash-4.2# cat /tmp/hello
Sun Sep 27 18:03:49 UTC 2015
Hello World
Sun Sep 27 18:03:59 UTC 2015
Hello World
Sun Sep 27 18:04:09 UTC 2015
Hello World
Sun Sep 27 18:04:19 UTC 2015
Hello World
Sun Sep 27 18:04:29 UTC 2015
Hello World
Sun Sep 27 18:04:39 UTC 2015
Hello World
bash-4.2#