ezKit 1.10.3__tar.gz → 1.10.4__tar.gz
Sign up to get free protection for your applications and to get access to all the features.
- {ezkit-1.10.3/ezKit.egg-info → ezkit-1.10.4}/PKG-INFO +1 -1
- {ezkit-1.10.3 → ezkit-1.10.4}/ezKit/utils.py +35 -36
- {ezkit-1.10.3 → ezkit-1.10.4/ezKit.egg-info}/PKG-INFO +1 -1
- {ezkit-1.10.3 → ezkit-1.10.4}/setup.py +1 -1
- {ezkit-1.10.3 → ezkit-1.10.4}/LICENSE +0 -0
- {ezkit-1.10.3 → ezkit-1.10.4}/MANIFEST.in +0 -0
- {ezkit-1.10.3 → ezkit-1.10.4}/README.md +0 -0
- {ezkit-1.10.3 → ezkit-1.10.4}/ezKit/__init__.py +0 -0
- {ezkit-1.10.3 → ezkit-1.10.4}/ezKit/bottle.py +0 -0
- {ezkit-1.10.3 → ezkit-1.10.4}/ezKit/bottle_extensions.py +0 -0
- {ezkit-1.10.3 → ezkit-1.10.4}/ezKit/cipher.py +0 -0
- {ezkit-1.10.3 → ezkit-1.10.4}/ezKit/database.py +0 -0
- {ezkit-1.10.3 → ezkit-1.10.4}/ezKit/http.py +0 -0
- {ezkit-1.10.3 → ezkit-1.10.4}/ezKit/mongo.py +0 -0
- {ezkit-1.10.3 → ezkit-1.10.4}/ezKit/qywx.py +0 -0
- {ezkit-1.10.3 → ezkit-1.10.4}/ezKit/redis.py +0 -0
- {ezkit-1.10.3 → ezkit-1.10.4}/ezKit/sendemail.py +0 -0
- {ezkit-1.10.3 → ezkit-1.10.4}/ezKit/token.py +0 -0
- {ezkit-1.10.3 → ezkit-1.10.4}/ezKit/xftp.py +0 -0
- {ezkit-1.10.3 → ezkit-1.10.4}/ezKit.egg-info/SOURCES.txt +0 -0
- {ezkit-1.10.3 → ezkit-1.10.4}/ezKit.egg-info/dependency_links.txt +0 -0
- {ezkit-1.10.3 → ezkit-1.10.4}/ezKit.egg-info/requires.txt +0 -0
- {ezkit-1.10.3 → ezkit-1.10.4}/ezKit.egg-info/top_level.txt +0 -0
- {ezkit-1.10.3 → ezkit-1.10.4}/setup.cfg +0 -0
@@ -13,7 +13,7 @@ from multiprocessing import Pool
|
|
13
13
|
from multiprocessing.pool import ThreadPool
|
14
14
|
from pathlib import Path
|
15
15
|
from shutil import rmtree
|
16
|
-
from typing import Any, Callable, List, Union
|
16
|
+
from typing import Any, Callable, List, Optional, Union
|
17
17
|
from urllib.parse import ParseResult, urlparse
|
18
18
|
from uuid import uuid4
|
19
19
|
|
@@ -1001,46 +1001,45 @@ def datetime_object(
|
|
1001
1001
|
# --------------------------------------------------------------------------------------------------
|
1002
1002
|
|
1003
1003
|
|
1004
|
-
# run_cmd = bash('echo ok', universal_newlines=True, stdout=PIPE)
|
1005
|
-
#
|
1006
|
-
# if run_cmd != None:
|
1007
|
-
# returncode = run_cmd.returncode
|
1008
|
-
# outputs = run_cmd.stdout.splitlines()
|
1009
|
-
# print(returncode, type(returncode))
|
1010
|
-
# print(outputs, type(outputs))
|
1011
|
-
#
|
1012
|
-
# # echo 'echo ok' > /tmp/ok.sh
|
1013
|
-
# run_script = bash('/tmp/ok.sh', file=True, universal_newlines=True, stdout=PIPE)
|
1014
|
-
#
|
1015
|
-
# if run_script != None:
|
1016
|
-
# returncode = run_script.returncode
|
1017
|
-
# outputs = run_script.stdout.splitlines()
|
1018
|
-
# print(returncode, type(returncode))
|
1019
|
-
# print(outputs, type(outputs))
|
1020
|
-
|
1021
|
-
|
1022
1004
|
def shell(
|
1023
1005
|
command: str,
|
1024
1006
|
isfile: bool = False,
|
1025
|
-
sh_shell: str =
|
1026
|
-
sh_option: str
|
1007
|
+
sh_shell: str = "/bin/bash",
|
1008
|
+
sh_option: Optional[str] = None,
|
1027
1009
|
**kwargs
|
1028
|
-
) -> subprocess.CompletedProcess
|
1029
|
-
"""
|
1010
|
+
) -> Optional[subprocess.CompletedProcess]:
|
1011
|
+
"""执行 Shell 命令 或 脚本"""
|
1012
|
+
|
1013
|
+
# :param command: 需要执行的命令
|
1014
|
+
# :param isfile: 是否将命令视为文件路径
|
1015
|
+
# :param sh_shell: 使用的 Shell 程序路径
|
1016
|
+
# :param sh_option: Shell 执行选项,例如 '-c'
|
1017
|
+
# :param kwargs: 其他传递给 subprocess.run 的参数
|
1018
|
+
# :return: 返回 subprocess.CompletedProcess 对象,失败时返回 None
|
1019
|
+
|
1030
1020
|
try:
|
1031
|
-
|
1032
|
-
|
1033
|
-
|
1034
|
-
|
1035
|
-
|
1036
|
-
|
1037
|
-
|
1038
|
-
|
1039
|
-
|
1040
|
-
|
1041
|
-
|
1042
|
-
|
1043
|
-
|
1021
|
+
|
1022
|
+
# 校验 Shell 程序路径
|
1023
|
+
if not check_file_type(sh_shell, "file"):
|
1024
|
+
logger.error(f"Invalid shell path: {sh_shell}")
|
1025
|
+
return None
|
1026
|
+
|
1027
|
+
# 校验 command 和 sh_shell 的类型
|
1028
|
+
if not (isTrue(sh_shell, str) and isTrue(command, str)):
|
1029
|
+
logger.error("Invalid shell or command input.")
|
1030
|
+
return None
|
1031
|
+
|
1032
|
+
# 构造命令
|
1033
|
+
if isfile:
|
1034
|
+
args = [sh_shell, command] if sh_option is None else [sh_shell, sh_option, command]
|
1035
|
+
else:
|
1036
|
+
sh_option = sh_option or "-c"
|
1037
|
+
args = [sh_shell, sh_option, command]
|
1038
|
+
|
1039
|
+
logger.info(f"Executing command: {args}")
|
1040
|
+
|
1041
|
+
return subprocess.run(args, **kwargs, check=False)
|
1042
|
+
|
1044
1043
|
except Exception as e:
|
1045
1044
|
logger.exception(e)
|
1046
1045
|
return None
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|