热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

在python程序中运行shell脚本

#!usrbinpython#导入各种模块importsys#各种变量consul_ipsys.argv[2]install_path#使用os.sy

#!/usr/bin/python
# 导入各种模块
import sys
...# 各种变量
consul_ip = sys.argv[2]
install_path = ...
...# 使用os.system()在python执行shell命令
os.system('mkdir -p '+install_path)
...
# 进一步对变量进行处理成 “export install_path= /opt” 形式
def create_env_str(env_dict):import pdbpdb.set_trace()env_str = ""for k, v in env_dict.items():env_str = env_str + "export " + k + "=" + v + "\n"return env_str# 将变量设置成字典,以便传递到shell脚本中使用
env_dict = {"install_path": install_path,"current_dir": current_dir,"req_path": req_path,"deps_path": deps_path,"packages": packages,"log_path": log_path,"consul_ip": sys.argv[2]
}# 创建可执行shell脚本
def gen_script_fire(env_dict):env = create_env_str(env_dict)# shell中要执行的具体的指令cmd = '''
#此处是往“/tmp/vmware-exporter-systemctl”文件中写内容,配置服务
sudo cat >/tmp/vmware-exporter-systemctl<[Unit]
Description&#61;Vmware Exporter
After&#61;network.target
[Service]
ExecStart&#61;/usr/bin/python ${install_path}/vmware_exporter/vmware_exporter/vmware_exporter.py -c ${consul_ip}
[Install]
WantedBy&#61;default.target
EOF
...&#39;&#39;&#39;
# 开始写with open(&#39;/tmp/service_firewalld.sh&#39;, &#39;w&#43;&#39;) as f:f.write("#!/bin/bash" &#43; "\n")f.write(env)f.write(cmd)def run(cmd):
# 用subprocess.call 方法执行shell脚本ret &#61; subprocess.call(cmd, shell&#61;True)if ret !&#61; 0:sys.exit(&#39;Exec cmd %s error, return value: %s&#39; % (cmd, str(ret)))def run_script():run("sudo bash /tmp/service_firewalld.sh")gen_script_fire(env_dict)
run_script()

注意&#xff1a;

cmd&#61; ”’ ”’ 中有expect命令时&#xff0c;可能出现expect spawn not found错误

原因&#xff1a;expec不是shell中的命令&#xff0c;所以在执行bash shellname.sh时会报错
解决&#xff1a;参考&#xff1a;http://blog.csdn.net/chinabluexfw/article/details/7461944
1. 不用bashsh执行shell脚本&#xff0c;使用./shellname.sh命令执行
2. 使用chmod &#43;x shellname.sh赋权限


推荐阅读
  • Go Cobra命令行工具入门教程
    本文介绍了Go语言实现的命令行工具Cobra的基本概念、安装方法和入门实践。Cobra被广泛应用于各种项目中,如Kubernetes、Hugo和Github CLI等。通过使用Cobra,我们可以快速创建命令行工具,适用于写测试脚本和各种服务的Admin CLI。文章还通过一个简单的demo演示了Cobra的使用方法。 ... [详细]
  • Centos7.6安装Gitlab教程及注意事项
    本文介绍了在Centos7.6系统下安装Gitlab的详细教程,并提供了一些注意事项。教程包括查看系统版本、安装必要的软件包、配置防火墙等步骤。同时,还强调了使用阿里云服务器时的特殊配置需求,以及建议至少4GB的可用RAM来运行GitLab。 ... [详细]
  • Metasploit攻击渗透实践
    本文介绍了Metasploit攻击渗透实践的内容和要求,包括主动攻击、针对浏览器和客户端的攻击,以及成功应用辅助模块的实践过程。其中涉及使用Hydra在不知道密码的情况下攻击metsploit2靶机获取密码,以及攻击浏览器中的tomcat服务的具体步骤。同时还讲解了爆破密码的方法和设置攻击目标主机的相关参数。 ... [详细]
  • 本文介绍了Perl的测试框架Test::Base,它是一个数据驱动的测试框架,可以自动进行单元测试,省去手工编写测试程序的麻烦。与Test::More完全兼容,使用方法简单。以plural函数为例,展示了Test::Base的使用方法。 ... [详细]
  • Android系统移植与调试之如何修改Android设备状态条上音量加减键在横竖屏切换的时候的显示于隐藏
    本文介绍了如何修改Android设备状态条上音量加减键在横竖屏切换时的显示与隐藏。通过修改系统文件system_bar.xml实现了该功能,并分享了解决思路和经验。 ... [详细]
  • 本文介绍了在Windows环境下如何配置php+apache环境,包括下载php7和apache2.4、安装vc2015运行时环境、启动php7和apache2.4等步骤。希望对需要搭建php7环境的读者有一定的参考价值。摘要长度为169字。 ... [详细]
  • 在CentOS/RHEL 7/6,Fedora 27/26/25上安装JAVA 9的步骤和方法
    本文介绍了在CentOS/RHEL 7/6,Fedora 27/26/25上安装JAVA 9的详细步骤和方法。首先需要下载最新的Java SE Development Kit 9发行版,然后按照给出的Shell命令行方式进行安装。详细的步骤和方法请参考正文内容。 ... [详细]
  • Ubuntu安装常用软件详细步骤
    目录1.GoogleChrome浏览器2.搜狗拼音输入法3.Pycharm4.Clion5.其他软件1.GoogleChrome浏览器通过直接下载安装GoogleChro ... [详细]
  • mac php错误日志配置方法及错误级别修改
    本文介绍了在mac环境下配置php错误日志的方法,包括修改php.ini文件和httpd.conf文件的操作步骤。同时还介绍了如何修改错误级别,以及相应的错误级别参考链接。 ... [详细]
  • 本文介绍了在CentOS 6.4系统中更新源地址的方法,包括备份现有源文件、下载163源、修改文件名、更新列表和系统,并提供了相应的命令。 ... [详细]
  • 本文介绍了Sencha Touch的学习使用心得,主要包括搭建项目框架的过程。作者强调了使用MVC模式的重要性,并提供了一个干净的引用示例。文章还介绍了Index.html页面的作用,以及如何通过链接样式表来改变全局风格。 ... [详细]
  • 本文介绍了使用readlink命令获取文件的完整路径的简单方法,并提供了一个示例命令来打印文件的完整路径。共有28种解决方案可供选择。 ... [详细]
  • 本文介绍了Java工具类库Hutool,该工具包封装了对文件、流、加密解密、转码、正则、线程、XML等JDK方法的封装,并提供了各种Util工具类。同时,还介绍了Hutool的组件,包括动态代理、布隆过滤、缓存、定时任务等功能。该工具包可以简化Java代码,提高开发效率。 ... [详细]
  • 本文介绍了Linux Shell中括号和整数扩展的使用方法,包括命令组、命令替换、初始化数组以及算术表达式和逻辑判断的相关内容。括号中的命令将会在新开的子shell中顺序执行,括号中的变量不能被脚本余下的部分使用。命令替换可以用于将命令的标准输出作为另一个命令的输入。括号中的运算符和表达式符合C语言运算规则,可以用在整数扩展中进行算术计算和逻辑判断。 ... [详细]
  • 解决github访问慢的问题的方法集锦
    本文总结了国内用户在访问github网站时可能遇到的加载慢的问题,并提供了解决方法,其中包括修改hosts文件来加速访问。 ... [详细]
author-avatar
qsslidan
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有