From 82ece92010c28013f5cb01201fa074456560a88b Mon Sep 17 00:00:00 2001 From: Abhi <85984486+AbhiTheModder@users.noreply.github.com> Date: Fri, 15 Dec 2023 16:14:11 +0000 Subject: [PATCH] Fix: shell.py --- modules/shell.py | 47 ++++++++++++----------------------------------- 1 file changed, 12 insertions(+), 35 deletions(-) diff --git a/modules/shell.py b/modules/shell.py index 2d3261d..11034f4 100644 --- a/modules/shell.py +++ b/modules/shell.py @@ -1,28 +1,10 @@ # Moon-Userbot - telegram userbot -# Copyright (C) 2020-present Moon Userbot Organization +# Copyright (C) 2020-present Dragon Userbot Organization # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . - -import subprocess -import shlex -import os -from time import perf_counter - -from pyrogram import Client, filters -from pyrogram.types import Message -from pyrogram import enums as enums - -from utils.misc import modules_help, prefix # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of @@ -36,7 +18,7 @@ from subprocess import Popen, PIPE, TimeoutExpired import os from time import perf_counter -from pyrogram import Client, filters +from pyrogram import Client, filters, enums from pyrogram.types import Message from utils.misc import modules_help, prefix @@ -47,18 +29,13 @@ async def shell(_, message: Message): if len(message.command) < 2: return await message.edit("Specify the command in message text", parse_mode=enums.ParseMode.HTML) cmd_text = message.text.split(maxsplit=1)[1] - cmd_args = shlex.split(cmd_text) - cmd_obj = subprocess.Popen( - cmd_args, - stdout=subprocess.PIPE, - stderr=subprocess.PIPE, + cmd_obj = Popen( + cmd_text, + shell=True, + stdout=PIPE, + stderr=PIPE, text=True, ) - try: - stdout, stderr = cmd_obj.communicate(timeout=60) - except subprocess.TimeoutExpired: - cmd_obj.kill() - text += "Timeout expired (60 seconds)" char = "#" if os.getuid() == 0 else "$" text = f"{char} {cmd_text}\n\n" @@ -66,18 +43,18 @@ async def shell(_, message: Message): await message.edit(text + "Running...", parse_mode=enums.ParseMode.HTML) try: start_time = perf_counter() - stdout, stderr = cmd_obj.stdout, cmd_obj.stderr - except subprocess.TimeoutExpired: + stdout, stderr = cmd_obj.communicate(timeout=60) + except TimeoutExpired: text += "Timeout expired (60 seconds)" else: stop_time = perf_counter() if stdout: - text += "Output:\n" f"{stdout}\n\n" + text += f"Output:\n{stdout}\n\n" if stderr: - text += "Error:\n" f"{stderr}\n\n" + text += f"Error:\n{stderr}\n\n" text += f"Completed in {round(stop_time - start_time, 5)} seconds with code {cmd_obj.returncode}" await message.edit(text, parse_mode=enums.ParseMode.HTML) cmd_obj.kill() -modules_help["shell"] = {"sh [command]*": "Execute command in shell"} +modules_help["shell"] = {"sh [command]*": "Execute command in shell"} \ No newline at end of file