@enabl3

Как оптимизировать код?

Всем привет, написал простого бота для управления локальными компами, хотелось бы узнать мнение авторитетных экспертов, так как я сам только вникаю в это дело. Как можно оптимизировать его код, буду очень признателен.
class SSHWrapper(object):
    def __init__(self, user='user', psw='pass1234', port=22):
        self.user = user
        self.psw = psw
        self.port = port
        self.ssh = paramiko.SSHClient()
        self.ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
		
#statusIP
    def get_status(self, host, user=None, psw=None, port=None):
        self.ssh.connect(
            hostname=host,
            port=port or self.port,
            username=user or self.user,
            password=psw or self.psw
        )
        # Выполнение команды
        stdin, stdout, stderr = self.ssh.exec_command("uptime -p")
        # Читаем результат:
        result = stdout.read() + stderr.read()
        self.ssh.close()
        return result
		
#rebootIP
    def get_reboot(self, host, user=None, psw=None, port=None):
        self.ssh.connect(
            hostname=host,
            port=port or self.port,
            username=user or self.user,
            password=psw or self.psw
        )
        # Выполнение команды
        stdin, stdout, stderr = self.ssh.exec_command("sudo reboot now")
        # Читаем результат:
        result = stdout.read() + stderr.read()
        self.ssh.close()
        return result

#downIP
    def get_down(self, host, user=None, psw=None, port=None):
        self.ssh.connect(
            hostname=host,
            port=port or self.port,
            username=user or self.user,
            password=psw or self.psw
        )
        # Выполнение команды
        stdin, stdout, stderr = self.ssh.exec_command("sudo -S shutdown -h now")
		stdin.write('pass1234')
		stdin.flush()
        # Читаем результат:
        result = stdout.read() + stderr.read()
        self.ssh.close()
        return result
		
ssh = SSHWrapper()

#HELPCOMMAND
help_string = []
help_string.append("*Вот что я умею на данный момент:*\n\n")
help_string.append("/start - Выводит приветствие\n")
help_string.append("/help - Отображает справку\n")
help_string.append("/status IP - Состояние работы компа\n")
help_string.append("/reboot IP - Перезагрузка компа\n")
help_string.append("/down IP - Выключение компа\n")

#START
@bot.message_handler(commands=['start'])
def send_start(message):
    # отправка простого сообщения
    bot.send_message(message.chat.id, "*Приветствую, {name}!*".format(name=message.chat.first_name), parse_mode="Markdown")
	
#HELP
@bot.message_handler(commands=['help'])
def send_help(message):
    # отправка сообщения с поддержкой разметки Markdown
    bot.send_message(message.chat.id, "".join(help_string), parse_mode="Markdown")
	
def listener(messages):
#STATUSIP
    @bot.message_handler(commands=['status'])
    def handle_status_request(message):
        # получение из чата IP сервака
        ip = message.text.split()[-1]
		thrue_ip = re.findall(r'[1][9][2].[1][6][8].\d{1,3}\.\d{1,3}', ip)
        if ip in thrue_ip:
		# проверка его на доступность
			r = pyping.ping(ip)
			if r.ret_code == 0:
				result = ssh.get_status(ip)
				bot.send_message(message.chat.id, result)
			else:
				result = ("Комп недоступен.")
				bot.send_message(message.chat.id, result)
        else:
                bot.send_message(message.chat.id, "*Команда НЕ распознана.*\nВероятнее всего НЕ указан (указан неправильно) IP адрес нужного тебе компа.", parse_mode="Markdown")

#REBOOTIP
    @bot.message_handler(commands=['reboot'])
    def handle_reboot_request(message):
        # получение из чата IP сервака
        ip = message.text.split()[-1]
        thrue_ip = re.findall(r'[1][9][2].[1][6][8].\d{1,3}\.\d{1,3}', ip)
        if ip in thrue_ip:
        # проверка его на доступность
            r = pyping.ping(ip)
            if r.ret_code == 0:
                result = ssh.get_reboot(ip)
        # проверка его на доступность после ребута
            r = pyping.ping(ip)
            if r.ret_code == 0:
                result = ("Комп был перезагружен.")
                bot.send_message(message.chat.id, result)
            else:
                result = ("Комп недоступен.")
                bot.send_message(message.chat.id, result)
        else:
                bot.send_message(message.chat.id, "*Команда НЕ распознана.*\nВероятнее всего НЕ указан (указан неправильно) IP адрес нужного тебе компа.", parse_mode="Markdown")

#DOWNIP
    @bot.message_handler(commands=['down'])
    def handle_down_request(message):
        # получение из чата IP сервака
        ip = message.text.split()[-1]
        thrue_ip = re.findall(r'[1][9][2].[1][6][8].\d{1,3}\.\d{1,3}', ip)
        if ip in thrue_ip:
        # проверка его на доступность
            r = pyping.ping(ip)
            if r.ret_code == 0:
                result = ssh.get_down(ip)
        # проверка его на доступность после выключения
            r = pyping.ping(ip)
            if r.ret_code == 0:
                result = ("Комп был выключен.")
                bot.send_message(message.chat.id, result)
            else:
                result = ("Комп недоступен.")
                bot.send_message(message.chat.id, result)
        else:
                bot.send_message(message.chat.id, "*Команда НЕ распознана.*\nВероятнее всего НЕ указан (указан неправильно) IP адрес нужного тебе компа.", parse_mode="Markdown")

bot.set_update_listener(listener)
while True:
    try:
        bot.polling(none_stop=True)
    except Exception as err:
        logging.error(err)
        time.sleep(10)
  • Вопрос задан
  • 226 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы