調用雲助手API介面(RunCommand/InvokeCommand)可以執行Shell、PowerShell或者Bat類型的指令碼。若需要執行其他指定指令碼解譯器(例如python、kubectl等)的指令碼,您可以通過指定CommandContent和Launcher來實現。
前提條件
執行個體的狀態必須為運行中(Running)。
執行個體已安裝雲助手Agent,且雲助手Agent版本需要高於以下對應的版本。
Linux:2.2.3.668
Windows:2.1.3.668
使用限制
僅支援執行個體內已經安裝的指令碼解譯器。
不支援需要輸入互動的指令碼解譯器。
使用方式
調用RunCommand或InvokeCommand執行雲助手命令時,指定CommandContent和Launcher參數。
CommandContent參數
CommandContent指準備執行的指令碼內容。例如,當使用者想要通過雲助手執行一段Python指令碼時,CommandContent參數需要填寫Python指令碼的具體內容。
Launcher參數
Launcher支援傳遞參數到指令碼解譯器,同時支援在指令碼解譯器後通過{{ACS::ScriptFileName}}標識符控制指令檔路徑在實際指令碼執行命令中的位置。
指定指令碼解譯器
Launcher參數指定指令碼解譯器時,根據是否配置指令碼解譯器的絕對路徑在PATH環境變數中,分為以下兩種使用方式:
未配置環境變數:您需要在
Launcher參數中輸入指定指令碼解譯器的絕對路徑。例如,Python指令碼解譯器路徑未配置在PATH環境變數中,Launcher參數設定如下:/usr/bin/python已配置環境變數:您可以在
Launcher參數中輸入指定指令碼解譯器名。例如,Python指令碼解譯器的路徑已經配置在PATH環境變數中,則可以直接在Launcher參數中指定為python:python
通過標識符指定指令檔在命令中的位置
未指定標識符
雲助手會在命令末尾添加實際執行的指令檔路徑。例如,
Launcher為python,雲助手實際在執行個體內部執行了python <file>,其中<file>表示指令碼內容CommandContent的實際寫入檔案路徑。通過標識符指定指令檔在命令中的位置
針對某些要求指令檔路徑在命令中特定位置的指令碼解譯器(例如,
python解譯器要求需要執行的指令檔路徑作為第一個參數),您可以在Launcher參數中,通過{{ACS::ScriptFileName}}標識符指定指令檔在命令中的位置。例如python {{ACS::ScriptFileName}} arg1 arg2此時,雲助手實際在執行個體內部執行了
python <file> arg1 arg2,其中<file>表示指令碼內容CommandContent的實際寫入檔案路徑。通過標識符指定指令檔尾碼名
針對某些嚴格要求尾碼名的指令碼解譯器,您可以通過
{{ACS::ScriptFileName|Ext(.ext)}}標識符指定指令檔名的尾碼名,例如python3 {{ACS::ScriptFileName|Ext(.py)}}此時,雲助手會將
Launcher參數中的{{ACS::ScriptFileName|Ext(.py)}}替換為尾碼名為.py的指令檔路徑。雲助手實際在執行個體內部執行了python3 <file>.py;其中<file>表示指令碼內容CommandContent的實際寫入檔案路徑。
使用情境樣本
調用系統內的Python程式執行指令碼內容
CommandContent
import datetime
current_date = datetime.date.today()
print(current_date)Launcher
python {{ACS::ScriptFileName|Ext(.py)}}調用系統內的kubectl程式執行指令碼內容
CommandContent
apiVersion: v1
kind: Pod
metadata:
name: my-pod
labels:
app: my-app
spec:
containers:
- name: my-container
image: nginx
ports:
- containerPort: 80Launcher
kubectl apply -f {{ACS::ScriptFileName|Ext(.yaml)}}調用regedit執行註冊表指令檔
CommandContent
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Micorsoft\Windows\Persionalization]
"NoLockScreen"=dword:000000001
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control]
"WaittoKillServiceTimeout"="2000"Launcher
regedit import {{ACS::ScriptFileName|Ext(.reg)}}低版本雲助手如何使用指令碼解譯器
當雲助手Agent版本低於前提條件中的版本要求時,您可以通過Heredoc機制(僅支援Linux系統)指定指令碼解譯器,HereDoc機制允許使用者在命令列中輸入多行文本。
python3 <<EOF
# 這是一個簡單的 Python 指令碼
import datetime
current_date = datetime.date.today()
print(current_date)
EOF