|
@@ -0,0 +1,75 @@
|
|
|
+# -*- coding: utf-8 -*-
|
|
|
+# @Time : 2021/5/27 11:23
|
|
|
+# @Author : XuJiakai
|
|
|
+# @File : environment_switch
|
|
|
+# @Software: PyCharm
|
|
|
+
|
|
|
+import platform
|
|
|
+import subprocess
|
|
|
+import os
|
|
|
+
|
|
|
+import yaml
|
|
|
+
|
|
|
+_module_path = os.path.dirname(__file__)
|
|
|
+
|
|
|
+
|
|
|
+def __ping_judge(ip):
|
|
|
+ CREATE_NO_WINDOW = 0x08000000
|
|
|
+ win_ping_cmd = "ping -n 1 {}".format(ip)
|
|
|
+ linux_ping_cmd = "ping -c 1 {}".format(ip)
|
|
|
+ if platform.system() == "Windows":
|
|
|
+ ret = subprocess.call(win_ping_cmd, shell=True, creationflags=CREATE_NO_WINDOW)
|
|
|
+ if platform.system() == "Linux":
|
|
|
+ ret = subprocess.call(linux_ping_cmd, shell=True)
|
|
|
+ if ret == 0:
|
|
|
+ return True
|
|
|
+ if ret == 1:
|
|
|
+ return False
|
|
|
+
|
|
|
+
|
|
|
+def _is_intranet_env():
|
|
|
+ if platform.system() == "Windows":
|
|
|
+ return False
|
|
|
+ # return __ping_judge("oss-cn-shanghai-internal.aliyuncs.com")
|
|
|
+ return True
|
|
|
+
|
|
|
+
|
|
|
+class environment_switch:
|
|
|
+ def __init__(self):
|
|
|
+ self.is_intranet = _is_intranet_env()
|
|
|
+ self.config = self.__get_conf()
|
|
|
+ pass
|
|
|
+
|
|
|
+ def __get_conf(self):
|
|
|
+ if self.is_intranet:
|
|
|
+ f = open(os.path.join(_module_path, 'env-prod.yaml')) # 打开yaml文件
|
|
|
+ pass
|
|
|
+ else:
|
|
|
+ f = open(os.path.join(_module_path, 'env-dev.yaml')) # 打开yaml文件
|
|
|
+ pass
|
|
|
+ d = yaml.load(f, Loader=yaml.FullLoader) # 使用load方法加载
|
|
|
+ return d
|
|
|
+
|
|
|
+ def get_val(self, path):
|
|
|
+ return self.__get_val(self.config, path)
|
|
|
+
|
|
|
+ def __get_val(self, conf, path):
|
|
|
+ index = path.find('.')
|
|
|
+ if index == -1 and path in conf:
|
|
|
+ return conf[path]
|
|
|
+
|
|
|
+ k = path[0: index]
|
|
|
+ other_path = path[index + 1:]
|
|
|
+
|
|
|
+ if k in conf:
|
|
|
+ v = conf[k]
|
|
|
+ return self.__get_val(v, other_path)
|
|
|
+ return None
|
|
|
+
|
|
|
+
|
|
|
+if __name__ == '__main__':
|
|
|
+ env = environment_switch()
|
|
|
+ print(env.is_intranet)
|
|
|
+ # vv = env.get_val('mongo.itslaw.url')
|
|
|
+ # print(vv)
|
|
|
+ pass
|