• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

question-closed Python subprocess.run różnice w wykonywaniu

Object Storage Arubacloud
0 głosów
69 wizyt
pytanie zadane 14 lutego w Python przez tubylec01 Obywatel (1,290 p.)
zamknięte 14 lutego przez tubylec01

Cześć,

Fragment kodu:

        try:
            print(f'Start pinging: {ip}')
            start_time = time()
            while self.result == 1 and time() - start_time < 10:
                print(f'Time: {time() - start_time}')
                if self.result == 0:
                    break
                sleep(1)
                x = ip.rsplit('.')[2]
                ip_s = f'192.168.{x}.248'
                ip_d = ip
                command = ['ping', '-S', f'{ip_s}', '-n', '2', f'{ip_d}']
                result = subprocess.run(command,
                                        timeout=timeout,
                                        # creationflags=0x08000000,
                                        creationflags=subprocess.DETACHED_PROCESS
                                        # stdout=subprocess.PIPE
                                        )
                print(f'Result: {result.returncode}')
                if result.returncode == 0 and b'TTL' in result.stdout:
                    self.ip = ip
                    self.result = 0
                    print(f'Win: {ip}')
                else:
                    self.result = 1

        except Exception as e:
            print(e)
            self.result = 1

Dlaczego jeśli uruchamiam ten skrypt jako skompilowany program do aplikacji - exe, to działa on inaczej niż plik wykonany przez interpreter?

Porównanie wyników:

Z pliku exe:

 

Z interpretera:

O co chodzi? Wykonanie z interpretera jest poprawne, dostaje odpowiedz "result" i próba jest wykonywana przez określony czas nie dłuższy niż 10 s, natomiast wersja exe nie daje żadnej odpowiedzi i nie próbuje powtarzać czynności przez określony czas 10 s.

Co może być przyczyną? 
Jeśli całość jest niezrozumiała postaram się doprecyzować problem.

komentarz zamknięcia: Problem rozwiązany

1 odpowiedź

0 głosów
odpowiedź 14 lutego przez VBService Ekspert (253,420 p.)

Sprawdź ustawienia firewall-a w systemie, interpreter python-a jak zgaduje ma dostęp do sieci, Twój exe już nie. wink

komentarz 14 lutego przez tubylec01 Obywatel (1,290 p.)

Dzięki za chęci ale to nie to (chyba).

Jako że staram się szukać odpowiedzi najpierw sam, potem ewentualnie jakieś forum + dalej szukam rozwiązania to znalazłem przyczynę. Rozchodzi się o jedną linię kodu, którą zamieniłem, jakiś spec od OS lub samego pythona pewnie będzie wiedział dlaczego tak jest ale idąc do brzegu to pomogło:

# command = ['ping', '-S', f'{ip_s}', '-n', '2', f'{ip_d}']'
command = f'ping -S {ip_s} -n 3 {ip_d}'

 

Podobne pytania

+1 głos
2 odpowiedzi 787 wizyt
pytanie zadane 30 grudnia 2018 w Python przez gunaterek Bywalec (2,760 p.)
0 głosów
2 odpowiedzi 185 wizyt
pytanie zadane 2 stycznia 2017 w Python przez Helmik Użytkownik (680 p.)
0 głosów
0 odpowiedzi 558 wizyt
pytanie zadane 8 marca 2023 w C i C++ przez Daniel338 Nowicjusz (120 p.)

92,584 zapytań

141,434 odpowiedzi

319,671 komentarzy

61,968 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...