在AWS EC2实例中通过Python代码运行Shell脚本及权限配置
从Python脚本调用Shell脚本的实现方法及权限设置
一、在main.py中调用somescript.sh的实现
你可以利用Python的subprocess模块完成Shell脚本调用,以下是几种常用实现方式:
方式1:直接执行脚本(推荐,需脚本有执行权限)
修改main.py,添加subprocess.run()调用:
import os import subprocess import venv venv.create('a_venv', with_pip=True) # 调用somescript.sh,check=True会在脚本执行失败时抛出异常 subprocess.run(['./somescript.sh'], check=True)
方式2:通过bash解释器执行(无需脚本执行权限)
如果暂时不想设置脚本权限,也可以指定bash解释器来运行脚本:
import os import subprocess import venv venv.create('a_venv', with_pip=True) subprocess.run(['bash', './somescript.sh'], check=True)
额外:让脚本使用创建的虚拟环境
如果你的Shell脚本需要用到a_venv虚拟环境中的依赖,可以先激活环境再执行脚本(仅适用于Linux/macOS):
import os import subprocess import venv venv.create('a_venv', with_pip=True) activate_path = os.path.join('a_venv', 'bin', 'activate') # 使用shell=True实现多命令串联执行 subprocess.run(f'source {activate_path} && ./somescript.sh', shell=True, check=True)
二、somescript.sh的权限设置
为了能直接执行脚本(对应方式1),需要给脚本添加可执行权限,在终端执行以下命令:
chmod +x somescript.sh
该命令会赋予脚本所有者、所属组及其他用户执行权限。如果仅想让所有者拥有执行权限,可使用chmod u+x somescript.sh。
另外,脚本开头的#!/bin/bash(shebang行)必须保留,它指定了脚本的解释器为bash,确保系统能正确识别并执行脚本。
内容的提问来源于stack exchange,提问作者arve
相关产品推荐
相关产品推荐

