python可以在linux运行_使用python在linux上运行系统命令?

我想知道是否有人可以指导我一个例子或帮助我使用我的代码在linux(centos)上运行命令.基本上,我假设我有一个基本的新服务器,并希望配置它.我以为我可以列出我需要运行的命令,它可以工作,但我收到错误.这些错误与没有任何关系(制作时)相关.

我认为这是因为(我只是在这里假设)python只是发送代码运行然后发送另一个和另一个而不是等待每个命令完成运行(在脚本失败后,我检查并且thrift包是下载并成功解压缩).

这是代码:

#python command list to setup new server

import commands

commands_to_run = ['yum -y install pypy autocon automake libtool flex boost-devel gcc-c++ byacc svn openssl-devel make java-1.6.0-openjdk git wget', 'service mysqld start',

'wget http://www.quickprepaidcard.com/apache//thrift/0.8.0/thrift-0.8.0.tar.gz', 'tar zxvf thrift-0.8.0.tar.gz',

'cd thrift-0.8.0', './configure', 'make', 'make install' ]

for x in commands_to_run:

print commands.getstatusoutput(x)

有关如何使其工作的任何建议?如果我的方法完全错误,请告诉我(我知道我可以使用bash脚本,但我正在努力提高我的python技能).

解决方法:

由于命令已经被弃用了很长时间,你应该真正使用子进程,特别是subprocess.check_output.而且,cd thrift-0.8.0只影响子进程,而不是你的.您可以调用os.chdir或将cwd参数传递给子进程函数:

import subprocess, os

commands_to_run = [['yum', '-y', 'install',

'pypy', 'python', 'MySQL-python', 'mysqld', 'mysql-server',

'autocon', 'automake', 'libtool', 'flex', 'boost-devel',

'gcc-c++', 'perl-ExtUtils-MakeMaker', 'byacc', 'svn',

'openssl-devel', 'make', 'java-1.6.0-openjdk', 'git', 'wget'],

['service', 'mysqld', 'start'],

['wget', 'http://www.quickprepaidcard.com/apache//thrift/0.8.0/thrift-0.8.0.tar.gz'],

['tar', 'zxvf', 'thrift-0.8.0.tar.gz']]

install_commands = [['./configure'], ['make'], ['make', 'install']]

for x in commands_to_run:

print subprocess.check_output(x)

os.chdir('thrift-0.8.0')

for cmd in install_commands:

print subprocess.check_output(cmd)

由于CentOS维护着古老版本的Python,您可能需要使用this backport.

请注意,如果要打印出输出,可以使用check_call调用子进程,因为默认情况下子进程会继承stdout,stderr和stdin.

标签:python,linux

来源: https://codeday.me/bug/20190729/1574557.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值