pythonshell怎么配置-python在shell中环境变量使用

1、用Python Shell设置或获取环境变量的方法:

设置系统环境变量

os.environ["环境变量名称"]="环境变量值" #其中key和value均为string类型

os.putenv("环境变量名称", "环境变量值")

获取系统环境变量

os.environ["环境变量名称"]

os.getenv("环境变量名称")

实例一、

In [52]: output=subprocess.check_output(["head -c 16 /dev/urandom | od -An -t x | tr -d " ""], shell=True)

In [53]: print(output)

b"3512c668547cd983cb48ccf05b0ccedf "In [67]: output.strip()

Out[67]: b"3512c668547cd983cb48ccf05b0ccedf"In [72]: output.strip().strip("b")---------------------------------------------------------------------------TypeError Traceback (most recent call last) in

----> 1 output.strip().strip("b")

TypeError: a bytes-like object is required, not "str"In [73]: os.environ["token"]=str(output.strip()).strip("b")

In [74]: os.getenv["token"]

Out[74]: ""3512c668547cd983cb48ccf05b0ccedf""实例二、

os.environ["user"]="jenkins"os.getenv["user"]"jenkins"os.path.expanduser(path)                 把path中包含的”~”和”~user”转换成用户目录

实例三、

os.path.expanduser("~")"/home/mysql"os.path.expandvars(path)                   根据环境变量的值替换path中包含的”$name”和”${name}”

实例四、

os.environ["user"]="jenkins"os.path.expandvars("$user/mysql")"jenkins/mysql"

2、对文件内容中定义的变量替换成真实的值

特别注意:原文件必须是 python文件,否则不能替换,

如果想要修改文件中的某一行或者某一个位置的内容,在python中是没有办法直接实现的,只能先把文件所有的内容全部读取出来,然后进行匹配修改后写入到新的文件中。

例如想要把文件中的变量替换为真实的值需要进行如下操作:

查看原文件内容

注意:下面TOKEN不能写成$TOKEN , 写入后查看文件会变成空格

cat> /k8s/profile/token.py <

TOKEN,kubelet-bootstrap,10001,"system:kubelet-bootstrap"EOF

定义变量

In [7]: output=subprocess.check_output(["head -c 16 /dev/urandom | od -An -t x | tr -d " ""], shell=True)

In [9]: token=str(output.decode("utf8").strip()).strip("b")

In [10]: print(token)

d3f4e95e05dfe34ea87217a55fb75bac

开始替换

In [3]: os.chdir("/etc/kubernetes/")

In [4]: if os.path.exists("token.csv"):

...: os.remove("token.csv")

In [56]: f = open("/k8s/profile/token.py","r",encoding="utf-8")

In [57]: f_new = open("/etc/kubernetes/token.csv","w",encoding="utf-8")

In [58]: for line inf:

...:if "TOKEN" inline:

...: line= line.replace("TOKEN",token)

...: f_new.write(line)

...: f.close()

...: f_new.close()3、替换文件中的主机名、ip 变量

cat> hostname_ip_py <

from __future__ importprint_functionimportos, sys, statimportshutilimporttarfileimportsubprocess#定义环境变量

#定义主机名

NODE_NAME = subprocess.check_output(["hostname"], shell=True)

NODE_NAME= str(NODE_NAME.decode("utf8").strip()).strip("b")#定义主机ip

NODE_IP = subprocess.check_output(["hostname -i | awk "{print $NF}""], shell=True)

NODE_IP= str(NODE_IP.decode("utf8").strip()).strip("b")

ETCD_NODES= "test1=https://192.168.0.91:2380,test2=https://192.168.0.92:2380,test3=https://192.168.0.93:2380"

#创建 etcd.service文件

f = open("/k8s/profile/etcd.service.template.py", "r", encoding="utf-8")

f_new= open("/etc/systemd/system/etcd.service", "w", encoding="utf-8")for line inf:if "NODE_NAME" inline:

line= line.replace("NODE_NAME", NODE_NAME)elif "NODE_IP" inline:

line= line.replace("NODE_IP", NODE_IP)elif "ETCD_NODES" inline:

line= line.replace("ETCD_NODES", ETCD_NODES)

f_new.write(line)print("替换完成")

f.close()

f_new.close()

EOF

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值