2012-04-30 4 views
0

Linux 서버에서 실행되는 Python 프로그램을 작성하고 있습니다. 이 유틸리티는 일부 로그 파일을 모니터하고 주어진 키워드를 기반으로 GUI에서 해당 로그 파일의 행을 표시합니다.Python에서 ssh를 통해 popen을 실행할 때 터미널 창이 열리지 않습니다.

내 프로그램에서 사용자가 두 번 클릭 한 줄을 "적은"숫자로 표시하는 터미널 창을 여는 새로운 기능이 추가되었습니다.

내 문제는 : 내 컴퓨터에서 로컬로 프로그램을 실행할 때 완벽하게 작동합니다. 그러나 메인 서버에서 프로그램을 실행할 때 SSH를 통해 프로그램이 잘 실행되지만 줄을 두 번 누르면 콘솔 창이 열리고 빨리 닫힙니다. 여기

는 "적은 터미널을"개방을 담당하는 코드입니다 :

p = subprocess.Popen(args = ["gnome-terminal", "--command = less -p " + "\"" +searchString + "\"" " -j 10 " + "\"" + path + "\""], stdout = subprocess.PIPE) 

가 어떻게이 열을 유지할 수 있습니다?

P. shell = TRUE을 추가하면 less 결과가없는 새 터미널 창이 열립니다.

+0

을 위해 일하지만, 당신이 당신의 문자열의 끝에'&& read'를 추가하는 경우, 당신은 사용자 입력에 대한 (대기 전에 출력하는 것을 볼 수 있어야합니다 계속) – deinonychusaur

답변

2

내 문제는 ssh와 관련이 없습니다. 나는 그걸 로컬 컴퓨터에서 다시 만들 수 있었다. 프로그램을 로컬에서 테스트 할 때 테스트 용으로 짧은 패턴 문자열을 사용했지만 서버로 옮겨서 실제 문자열을 사용하기 시작했을 때 너무 컸습니다.

나는 less 패턴보다 큰 99 문자를주었습니다. 그리고 나는 "ungetcc overflow", known bug을 얻었는데,이 버전은 이후 438 버전의 less으로 수정되었습니다.

0

그것은 이것은 해결책이 아니다 나를

if sys.platform != "win32": sp.Popen(command.split(), shell=False) 
else: sp.Popen(command.split(), shell=True)