この製品のマニュアルセットは、偏向のない言語を使用するように配慮されています。このマニュアルセットでの偏向のない言語とは、年齢、障害、性別、人種的アイデンティティ、民族的アイデンティティ、性的指向、社会経済的地位、およびインターセクショナリティに基づく差別を意味しない言語として定義されています。製品ソフトウェアのユーザーインターフェイスにハードコードされている言語、RFP のドキュメントに基づいて使用されている言語、または参照されているサードパーティ製品で使用されている言語によりドキュメントに例外が存在する場合があります。シスコのインクルーシブランゲージに対する取り組みの詳細は、こちらをご覧ください。
このドキュメントは、米国シスコ発行ドキュメントの参考和訳です。リンク情報につきましては、日本語版掲載時点で、英語版にアップデートがあり、リンク先のページが移動/変更されている場合がありますことをご了承ください。あくまでも参考和訳となりますので、正式な内容については米国サイトのドキュメントを参照ください。
Cisco Nexus 9000 シリーズ デバイスは、NX-OS CLI のほかに Bourne-Again SHell(Bash)へのアクセスもサポートしています。Bash は、入力されたコマンドまたはシェル スクリプトから読み取られたコマンドを解釈します。Bash を使用することにより、デバイスの基盤となる Linux システムへのアクセスや、システムの管理を実行できます。
Bash シェルには次の注意事項と制約事項があります。
Cisco NX-OS では、Bash は Cisco NX-OS dev-ops ロールや Cisco NX-OS network-admin ロールに関連付けられたユーザ アカウントからアクセスできます。
次の例は、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#
Bash は、feature bash-shell コマンドを実行することによって有効になります。
run bash コマンドを実行すると、Bash がロードされ、そのユーザのホーム ディレクトリで開始されます。
次の例は、Bash シェル機能を有効にする方法と、Bash を実行する方法を示しています。
switch# configure treminal 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$
(注) | Bash コマンドは、run bashcommand コマンドでも実行できます。 次に、run bashcommand コマンドの例を示します。 run bash whoami また、ユーザに対して shelltype を設定することにより、Bash シェルに入ることもできます。 username foo shelltype bash このコマンドを実行すると、Bash シェルに直接移動できます。 |
管理者ユーザの権限により、ルート アクセスの権限を昇格できます。
次に、権限昇格のガイドラインを示します。
次の例は、権限をルートに昇格する方法と昇格の検証方法を示しています。
switch# run bash bash-4.2$ sudo su root We trust you have received the usual lecture from the local System Administrator. It usually boils down to these three things: #1) Respect the privacy of others. #2) Think before you type. #3) With great power comes great responsibility. Password: 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 bashcommand コマンドを使用して、CLI から Bash コマンドを実行する方法を示しています。
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
次の例は、Python をロードし、Python スクリプトを使用してスイッチを設定する方法を示しています。
switch# run bash bash-4.2$ python Python 2.7.5 (default, Oct 8 2013, 23:59:43) [GCC 4.7.2] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> from cisco import * >>> from cisco.vrf import * >>> from cisco.interface import * >>> vrfobj=VRF('myvrf') >>> vrfobj.get_name() 'myvrf' >>> vrfobj.add_interface('Ethernet1/3') True >>> intf=Interface('Ethernet1/3') >>> print intf.config() !Command: show running-config interface Ethernet1/3 !Time: Mon Nov 4 13:17:56 2013 version 6.1(2)I2(1) interface Ethernet1/3 vrf member myvrf >>>
コマンドまたはアクション | 目的 |
---|
次に、bfd RPM のインストール例を示します。
bash-4.2$ sudo yum 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$ sudo yum list available bgp.lib32_n9000 1.0.0-r0 bash-4.2$ sudo yum -y install bfd
(注) | 起動中のスイッチのリロード時、永続化された RPM が yum コマンドではなく、rpm を使用してインストールされます。したがって、rpm ステータスのリストには、yum bash または install CLI コマンドを使用した最初のインストール元の reponame や filename ではなく、installed が表示されます。 |
Yum リポジトリには、新しいバージョン RPM が必要です。
コマンドまたはアクション | 目的 |
---|
次に、bfd RPM のアップグレード例を示します。
bash-4.2$ sudo yum -y upgrade bfd
コマンドまたはアクション | 目的 |
---|
次の例は、bfd RPM をダウングレードする方法を示しています。
bash-4.2$ sudo yum -y downgrade bfd
(注) | SNMP RPM および NTP RPM は保護されており、削除できません。 これらの RPM はアップグレードまたはダウングレードできます。アップグレードまたはダウングレードを有効にするには、システムのリロードが必要です。 保護された rpm の一覧は /etc/yum/protected.d/protected_pkgs.conf で確認できます。 |
コマンドまたはアクション | 目的 |
---|
次の例は、bfd RPM を削除する方法を示しています。
bash-4.2$ sudo yum -y erase bfd
アプリケーションに startup bash スクリプトがあり、このスクリプトが /etc/init.d/application_name にインストールされていることが必要です。この startup 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
bash-4.2# ls -l /etc/rc3.d/tcollector
lrwxrwxrwx 1 root root 20 Sep 25 22:56 /etc/rc3.d/S15tcollector -> ../init.d/tcollector
bash-4.2#
次の例は、ネイティブ 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#