Форум сайта python.su
Напишите как после else начать выполнение строки ‘for x in range(10):’?
import random import subprocess pas = '' for x in range(10): #Количество символов (10) pas = pas + random.choice(list('1234567890abcdefghigklmnopqrstuvyxwzABCDEFGHIGKLMNOPQRSTUVYXWZ')) cmd = f'run --pass {pas}' PIPE = subprocess.PIPE p = subprocess.Popen(cmd, shell = True) if 'world' in p: # если в выводе консоли есть слово "world" fp = open('/home/test.txt', 'w') # записать вывод в файл fp.write(p) fp.close() else: #иначе начать выполнение строки 4
Офлайн
import random import subprocess pas = '' while True: for x in range(10): #Количество символов (10) pas = pas + random.choice( '1234567890' 'abcdefghigklmnopqrstuvyxwz' 'ABCDEFGHIGKLMNOPQRSTUVYXWZ' ) cmd = f'run --pass {pas}' PIPE = subprocess.PIPE p = subprocess.Popen(cmd, shell=True) if 'world' in p: # если в выводе консоли есть слово "world" fp = open('/home/test.txt', 'w') # записать вывод в файл fp.write(p) fp.close() break
Отредактировано py.user.next (Дек. 6, 2022 08:58:53)
Офлайн
if 'world' in p: # если в выводе консоли есть слово "world"
Exception has occurred: TypeError argument of type 'Popen' is not iterable File "/home/script.py", line 14, in <module> if 'world' in p: # если в выводе консоли есть слово "world"
Отредактировано amwww (Дек. 6, 2022 10:23:38)
Офлайн
>>> import subprocess >>> >>> p = subprocess.Popen('cat /etc/passwd'.split(), stdout=subprocess.PIPE) >>> 'bin' in p.stdout.read().decode('utf-8') True >>>
Офлайн
Вот такой код:
import random import subprocess pas = '' while True: for x in range(4): #Количество символов (4) pas = pas + random.choice(list('1234567890')) #Символы, из которых будет составлен пароль print('your password is: ', pas) cmd = f'torsocks --P {pas}' stdout=subprocess.PIPE p = subprocess.Popen(cmd, shell = True) print ('consol:', p.stdout) if '3333' in p.stdout.read().decode('utf-8'): # если в выводе консоли есть порт "3333" fp = open('/tmp/test.txt', 'w') # записать вывод в файл fp.write(p) fp.close() break
your password is: 2269 consol: None Traceback (most recent call last): File "/home/script.py", line 12, in <module> if '3333' in p.stdout.read().decode('utf-8'): # если в выводе консоли есть порт "3333" AttributeError: 'NoneType' object has no attribute 'read' Please provide an application to torify.
Офлайн
p = subprocess.Popen(cmd, stdout=subprocess.PIPE)
Офлайн
xam1816Так хуже:
p = subprocess.Popen(cmd, stdout=subprocess.PIPE)
your password is: 9950 Traceback (most recent call last): File "/home/script.py", line 10, in <module> p = subprocess.Popen(cmd, stdout=subprocess.PIPE) File "/usr/lib/python3.10/subprocess.py", line 969, in __init__ self._execute_child(args, executable, preexec_fn, close_fds, File "/usr/lib/python3.10/subprocess.py", line 1845, in _execute_child raise child_exception_type(errno_num, err_msg, err_filename) FileNotFoundError: [Errno 2] No such file or directory: 'torsocks -P 9950'
Офлайн
amwwwСудя по этому коду, ты даже не понимаешь, что ты делаешь.
Вот такой код:import random import subprocess pas = '' while True: for x in range(4): #Количество символов (4) pas = pas + random.choice(list('1234567890')) #Символы, из которых будет составлен пароль print('your password is: ', pas) cmd = f'torsocks --P {pas}' stdout=subprocess.PIPE p = subprocess.Popen(cmd, shell = True) print ('consol:', p.stdout) if '3333' in p.stdout.read().decode('utf-8'): # если в выводе консоли есть порт "3333" fp = open('/tmp/test.txt', 'w') # записать вывод в файл fp.write(p) fp.close() break
Отредактировано py.user.next (Дек. 6, 2022 22:57:20)
Офлайн
Не понятно как прочесть вывод консоли subprocess и найти в нем нужную фразу.
Отредактировано amwww (Дек. 7, 2022 09:43:35)
Офлайн
amwwwДля этого сначала надо найти программу консольную, которую ты запускаешь и она выводит на консоль что-то. В консоли есть два канала вывода - stdout и stderr.
Не понятно как прочесть вывод консоли subprocess
>>> import subprocess >>> >>> p = subprocess.Popen( ... ['cat', '/etc/passwd', 'nothing'], ... stdout=subprocess.PIPE, ... stderr=subprocess.PIPE ... ) >>> >>> text_from_stdout = p.stdout.read().decode('utf-8') >>> text_from_stderr = p.stderr.read().decode('utf-8') >>> >>> print(text_from_stdout[:20]) root:x:0:0:root:/roo >>> >>> print('root' in text_from_stdout) True >>> print('take' in text_from_stdout) False >>> >>> print(text_from_stderr[:20]) cat: nothing: No suc >>> print('such' in text_from_stderr) True >>> print('ball' in text_from_stderr) False >>> >>> p <subprocess.Popen object at 0x7f2140652710> >>> >>> subprocess.PIPE -1 >>>
Офлайн