本檔案介紹Cisco IOS® Shell(IOS.sh)CLI模組。
思科建議您瞭解Cisco IOS版本15.1(4)M、15.1(2)S和更新版本。必須配置並啟用Cisco IOS.sh,才能在路由器上使用Cisco IOS.sh特性和功能。
本檔案中的資訊是根據以下硬體和軟體版本:
本文中的資訊是根據特定實驗室環境內的裝置所建立。文中使用到的所有裝置皆從已清除(預設)的組態來啟動。如果您的網路正在作用,請確保您已瞭解任何指令可能造成的影響。
Cisco IOS.sh是一個允許在Cisco IOS CLI中使用外殼指令碼的模組。此模組有助於自動化日常操作並簡化裝置管理。它可以與其他管理工具(例如Cisco IOS嵌入式事件管理器(EEM))結合使用。
要在裝置上啟用外殼CLI,請輸入:
Switch#terminal shell
要禁用命令列介面,請輸入:
Switch#terminal no shell
此功能支援PATH變數,該變數包含目錄清單,外殼可以在其中搜尋函式/小程式。此外,Shell CLI支援以下功能:
Switch#show version | grep 15.1
Cisco IOS Software, s2t54 Software (s2t54-ADVENTERPRISEK9-M),
Version 15.1(1)SY, RELEASE SOFTWARE (fc2)
Switch#show version | grep 15 > bootdisk:version.txt
Switch#dir bootdisk:
Directory of bootdisk:/
14 -rw- 280 Nov 15 2012 23:25:32 +00:00 version.txt
1024557056 bytes total (577273856 bytes free)
Switch#cat bootdisk:version.txt
Cisco IOS Software, s2t54 Software (s2t54-ADVENTERPRISEK9-M),
Version 15.1(1)SY, RELEASE SOFTWARE (fc2)
Cisco IOS.sh包含幾個內建小程式,可幫助建立使用者功能的應用和過濾器:
[[ evaluate a logical test expression
cat output data from a pipe or file to the terminal
cut edit piped output
echo echo arguments to the terminal
false return false in while or if expressions, and set the result
fetch return values from the configuration database
grep search for regular expressions in piped output or files
head print the first lines in the input
interface print interfaces that match the argument
let evaluate a numeric expression, and set the result
man print information for built-ins
more page piped output to the terminal
nl number the lines in the input
null ignore the input
printf output formatted data to the terminal
read read input into variables
set_oper set operational values
sleep pause execution of the terminal
sort sort the input
tail print the tail of the input
true return true in while or if expressions, and set the result
uname print system information
wc count lines, words, and characters
以下是用於if...然後…….else運算符。
Switch#x=5
Switch#if [[ $x != 5 ]];
then.else.fi>then
then.else.fi>echo false;
then.else.fi>else
else..fi>echo true;
else..fi>fi;
true
Switch#
以下比較運算子用於整數值:
運算子 | 說明 |
-eq | Arg1-eq Arg2。如果Arg1等於Arg2,則為True |
-ne | Arg1-ne Arg2。如果Arg1不等於Arg2,則為True |
-lt | Arg1-lt Arg2。如果Arg1小於Arg2,則為True |
-gt | Arg1-gt Arg2。如果Arg1大於Arg2,則為True |
-ge | Arg1-ge Arg2。如果Arg1大於或等於Arg2,則為True |
-le | Arg1-le Arg2。如果Arg1小於或等於Arg2,則為True |
可以使用以下條件來處理檔案:
運算子 | 說明 |
-a或 — e | 如果檔案存在,則為True |
-d | 如果檔案存在且為目錄,則為True |
-f | 如果檔案存在且是常規檔案,則為True |
-r | 如果檔案存在且可讀,則為True |
-s | 如果檔案存在且大小大於零,則為True |
-w | 如果檔案存在並且是執行檔,則為True |
-nt | 測試file1是否比file2新。將檔案的修改日期用於此比較 |
-ot | 測試file1是否早於file2 |
要在比較運算子中使用多個條件,可以使用以下邏輯運算子:
&& Logical AND
|| Logical OR
循環與Linux shell中的循環相同。可以使用兩個運算子。
以下是for運算子的命令:
Switch#for x in 11
do..done>do
do..done>ping 192.0.2.$x
do..done>done
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.0.2.10,timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 1/1/1 ms
Switch#
以下是while運算子的命令:
Switch#for i in 1 2 3
do..done>do
do..done>while [ $i -lt 3 ]
do..done>do
do..done>echo $i
do..done>done
do..done>i=i+1
do..done>done
Switch#
對於字串比較,如果……然後…….else運算符可用於以下修改:
運算子 | 說明 |
== | 字串1==字串2,如果字串相等,則為True。 |
!= | String1 != string2 ,如果字串不等於,則為True |
< | String1 < string2,如果string1的字典號小於string2,則為True |
> | String1 > string2,如果string1的字典號大於string2,則為True |
Switch#function add_desc() {
{..} >show running-config interface Gi$1
{..} >configuration terminal
{..} >interface Gi$1
{..} >description $2
{..} >end
{..} >show running-config interface Gi$1
{..} >}
Switch#add_desc 5/1 SHELL_TEST
Building configuration...
Current configuration : 74 bytes
!
interface GigabitEthernet5/1
ip address 192.0.2.10 255.255.255.0
end
Enter configuration commands, one per line. End with CNTL/Z.
Building configuration...
Current configuration : 98 bytes
!
interface GigabitEthernet5/1
description SHELL_TEST
ip address 192.0.2.10 255.255.255.0
end
Switch#
使用本節內容,確認您的組態是否正常運作。
輸入show terminal命令以顯示目前的終端組態:
Switch#show terminal
Line 2, Location: "", Type: "XTERM-COLOR"
Length: 44 lines, Width: 155 columns
Baud rate (TX/RX) is 9600/9600
Status: PSI Enabled, Ready, Active, No Exit Banner, Ctrl-c Enabled
........
Preferred transport is lat.
Shell: enabled
Shell trace: off
輸入show shell functions命令以顯示模組中的所有可用函式,其中包括使用者定義的函式:
Switch#show shell functions
#User defined functions:
Function namespace: DEFAULT
function add_desc()
{
show running-config interface Gi$1
configure terminal
interface Gi$1
description $2
end
show running-config interface Gi$1
}
目前尚無適用於此組態的具體疑難排解資訊。
修訂 | 發佈日期 | 意見 |
---|---|---|
1.0 |
05-Jul-2013 |
初始版本 |