LINUX.ORG.RU

Ломается терминал после subproces.Popen при ошибке timeout

 , ,


0

2

Привет. Написал простой код — программа коннектится по telnet, если в течение 10 секунд процесс не завершился — он убивается:

#!/usr/bin/python3
import subprocess
try:
	proc=subprocess.Popen("telnet 192.168.1.1", shell=True, universal_newlines=True, stdout=subprocess.PIPE)
	proc.wait(10)
except:
	proc.terminate()
	print("hello")

Всё ОК, но после этого ломается терминал: http://i.imgur.com/QgSUbDl.png

Как этого избежать?

★★★

Последнее исправление: iljuase (всего исправлений: 1)

Ответ на: комментарий от awesomebuntu

Да, там роутер.

Если немного подредактировать код:

vodka@vodka-PC:/tmp$ ./1.py 
Trying 192.168.1.1...
Connected to 192.168.1.1.
Escape character is '^]'.
Login: hello
            vodka@vodka-PC:/tmp$ vodka@vodka-PC:/tmp$ vodka@vodka-PC:/tmp$ vodka@vodka-PC:/tmp$ vodka@vodka-PC:/tmp$ vodka@vodka-PC:/tmp$ 

iljuase ★★★
() автор топика
Ответ на: комментарий от iljuase

Я попробовал подключаться себе к планшету, все равно не ломается.

awesomebuntu
()
Ответ на: комментарий от awesomebuntu

python2

Я подтверждаю, на python2 всё работает.

С кодом

import subprocess
proc=subprocess.Popen("telnet 192.168.1.1", shell=True)
На python2 проблем нет, на python3 уже есть.

А шелл какой у тебя?

bash

iljuase ★★★
() автор топика
Ответ на: комментарий от iljuase

Я подтверждаю, на python2 всё работает.

Если третий питон тебе не принципиален, то и используй его.

awesomebuntu
()
proc=subprocess.Popen("telnet 192.168.1.1", shell=True, universal_newlines=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)

Просто перенаправь stderr в PIPE. И получится вроде list с stderr и stdout. Как-то так.

mahalaka ★★
()
Ответ на: комментарий от iljuase
$/tmp echo $TERM
xterm
$/tmp cat asd.py 
#!/usr/bin/python3
import subprocess
try:
	proc=subprocess.Popen("telnet bbs.archaicbinary.net", shell=True, universal_newlines=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
	proc.wait(10)
except:
	proc.terminate()
	print("hello")
$/tmp 

У меня почему-то всё ок, ничего не ломаеца.

mahalaka ★★
()
Ответ на: комментарий от mahalaka

И какой $TERM

xterm-256color?

Какой у тебя терминал?

Пробовал GNOME Terminal, xterm, ctrl+alt+f1 — везде возникает проблема.

iljuase ★★★
() автор топика
Ответ на: комментарий от iljuase

Хм, действительно в перечисленных тобой терминалах всё ломается. :-) Я пробовал в guake и konsole.

mahalaka ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.