문제예상하다, 파이썬 모듈.
명령 길이가 65보다 크면 Pexpect는 예상된 동작을 수행하지 않습니다.
#!/usr/bin/python
import pexpect
sshCmd='ssh [email protected]'
prompt='[root@user ~]#'
ConnectToClient=pexpect.spawn(sshCmd)
ConnectToClient.expect('password')
ConnectToClient.send('abcd')
ConnectToClient.expect(prompt)
ConnectToClient.send('echo abcdefghijklmnopqrst111111111111111111111111111111111111111111111111111111111 ')
ConnectToClient.expect(prompt) ---> PASS
command = 'echo abcdefghijklmnopqrst111111111111111111111111111111111111111111111111111111111'
ConnectToClient.expect(command, prompt)
":"이 예상되는 경우, command (.*) prompt
--->실패하다명령 길이가 65자보다 큰 경우.
expect_str = "%s(.*)%s" % (command, self._default_prompt)
답변1
프로그램에 두 가지 오류가 있습니다. 마지막 줄은 불법입니다.
ConnectToClient.expect(command, prompt)
Expect는 문자열 대신 시간 초과 숫자를 두 번째 매개 변수로 사용하므로 효과가 없습니다.
통화 중 또 다른 질문은 다음과 같습니다.
ConnectToClient.expect(prompt)
prompt
정규식(정규식)이어야 합니다. 문자열을 제공하면 정규식으로 컴파일됩니다. 하지만 정규 표현식에서는 이 문자가 [
특별하므로 이스케이프 처리해야 합니다. 모든 설정
prompt = r'\[root@user ~\]#'
또는 regex 대신 문자열이 필요한 use를 사용하지 마십시오 .expect()
..expect_exact()
답변2
기본적으로 프롬프트와 명령이 80보다 긴 경우 pexpect windowsize는 (24행과 80열)로 설정됩니다. 나는이 문제에 직면 해 있습니다. setwinsize(24,80)를 setwinsize(24,150)로 변경하면 정상적으로 작동합니다.