python脚本文件变量设置_在python脚本中设置环境变量,并运行相关应用

importsubprocess, re, os, socket, resource, pwd, crypt, logging, sys, platformdefdemote(user_uid, user_gid):defresult():

os.setgid(user_gid)

os.setuid(user_uid)returnresultclasssetuputil:

@staticmethoddef run_command(args, username=None, usercwd=None):try:ifusername:

pw_record=pwd.getpwnam(username)

env=os.environ.copy()

env['HOME'] =pw_record.pw_dir

env['LOGNAME'] =username

env['USER'] =usernameifusercwd:

env['PWD'] =usercwd

p= subprocess.Popen(args, preexec_fn=demote(pw_record.pw_uid, pw_record.pw_gid),

cwd=usercwd, env=env, close_fds=True)else:

p= subprocess.Popen(args, stdout=subprocess.PIPE, stderr=subprocess.PIPE, close_fds =True)

outputs=p.communicate()for out inoutputs:ifout:return(p.returncode, out)exceptOSError as os_e:return(os_e.errno, os_e.strerror)exceptValueError as val_e:return(val_e.errno, val_e.strerror)else:return(p.returncode, outputs)

@staticmethoddefjava_version():

java_ver_pattern= '\"(\d+\.\d+).*\"'java_cmd= "java"

if 'JAVA_HOME' inos.environ:

java_cmd= os.environ['JAVA_HOME'] + "/bin/java"version= subprocess.check_output([java_cmd, '-version'], stderr=subprocess.STDOUT)ifversion:returnre.search(java_ver_pattern, version).groups()[0]else:returnNone

@staticmethoddefstart_app(es_exec, pid_file, es_user):

rtcode, msg= setuputil.run_command([es_exec, '-d', '-p', pid_file], es_user)ifrtcode:return(rtcode, msg)else:return (0, "OK")

MIN_JAVA_VERSION= 1.8



ELASTIC_USER= 'elastic'ELASTIC_PASSWORD= 'elastic'ELASTIC_PID= '/tmp/elasticpid'

defmain():#set up java home

os.environ['JAVA_HOME'] = '/shared/java8'j_ver=setuputil.java_version()if not j_ver or float(j_ver)

logging.error("Java isn't installed or java version is not up to date: %s", j_ver if j_ver else "None")return (1, "Java isn't installed or java version is not up to date: %s"%(j_ver if j_ver else "None"))

rtcode, msg= setuputil.start_app('/opt/elasticsearch6.2.3/bin/elasticsearch', ELASTIC_PID, ELASTIC_USER)ifrtcode:

logging.error("Failed to start elasticsearch: %d, %s", rtcode, msg)return(rtcode, msg)else:

logging.debug("Start elasticsearch: %s", msg)return(0, None)if __name__ == '__main__':

main()

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值