调用云助手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: 80
Launcher
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