Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

Junos PyEZ를 사용하여 Junos 디바이스의 셸에 액세스

요약 Junos PyEZ를 사용하여 Junos 디바이스의 셸에 연결하고 명령을 실행합니다.

StartShell 개요

Junos CLI에는 많은 셸 명령에서 반환되는 정보와 유사한 정보를 반환하는 많은 운영 모드 명령이 있습니다. 따라서 Junos 디바이스의 UNIX 레벨 셸에 액세스할 필요는 없습니다. 그러나 경우에 따라 사용자 또는 애플리케이션이 셸에 액세스하여 셸 명령을 실행하거나 셸에서 CLI 명령을 실행해야 할 수 있습니다.

Junos PyEZ jnpr.junos.utils.start_shell 모듈은 클래스를 정의 StartShell 하며, 이를 통해 Junos PyEZ 애플리케이션이 Junos 디바이스에 대한 SSH 연결을 시작하고 셸에 액세스할 수 있습니다. StartShell 메서드를 사용하면 응용 프로그램에서 연결을 통해 명령을 실행하고 응답을 검색할 수 있습니다.

StartShell open()close() 메서드는 디바이스와의 SSH 연결을 설정하고 종료합니다. 따라서 클라이언트 응용 프로그램이 셸에만 액세스해야 하는 경우 및 close() 메서드에 Device open() 대한 호출을 생략할 수 있습니다.

Junos PyEZ 릴리스 2.6.7 및 이전 StartShell 버전에서는 인스턴스가 기본 SSH 포트 22에 연결됩니다. Junos PyEZ 릴리스 2.6.8 StartShell 부터 인스턴스는 셸 연결이 여전히 포트 22를 사용하는 다음과 같은 경우를 제외하고 인스턴스에 정의된 Device 것과 동일한 포트에 연결됩니다.

  • Devicehost 은(는) 'localhost'로 설정됩니다.

  • Deviceport 이 830으로 설정되어 있습니다.

  • Deviceport 이(가) 정의되지 않았습니다.

셸에서 명령 실행

StartShell run() 메서드는 셸 명령을 실행하고 응답을 기다립니다. 기본적으로 메서드는 명령 출력을 반환하기 전에 기본 셸 프롬프트(%, #, > 또는 $) 중 하나를 기다립니다. 또는 인수를 this="string" 특정 문자열로 설정할 수 있으며, 메서드는 명령 출력을 반환하기 전에 예상되는 문자열이나 패턴을 기다립니다.

반환 값은 튜플입니다. 첫 번째 항목은 True 종료 코드가 0인 경우이고 False , 그렇지 않은 경우입니다. 두 번째 항목은 명령의 출력입니다.

다음 예제에서는 호스트에 연결하고 셸에서 두 개의 작동 모드 명령을 실행합니다. 스크립트는 먼저 명령을 실행하고 request support information 출력을 파일에 저장합니다. 그런 다음 스크립트는 명령을 실행 show version 하고, 출력을 version 변수에 저장한 다음, 변수의 내용을 출력합니다.

반환된 튜플에는 명령의 종료 코드와 명령의 명령 출력에 해당하는 부울이 show version 포함됩니다. 이 예제의 출력은 간결성을 위해 잘립니다.

클래스의 인스턴스를 StartShell 컨텍스트 관리자로 사용할 수도 있습니다. 이 경우 및 close() 메서드를 명시적으로 호출할 StartShell open() 필요가 없습니다. 예를 들어:

쉘 유형을 지정하는 방법

Junos PyEZ 릴리스 2.6.4 Startshell 부터 원격 스크립트 내에서 이 인수를 지원 shell_type 하여 셸 유형을 지정합니다. 는 다음 셸 유형을 지원합니다. Startshell

  • C 쉘(csh)

  • 본식 쉘(재)

기본적으로 Startshell 인스턴스는 C 쉘(csh) 유형입니다. 본 스타일 쉘(ash)을 시작하도록 지정할 shell_type="sh" 수도 있습니다. 예를 들어:

시간 제한을 지정하는 방법

인수를 StartShell timeout 포함하여 시간이 초과되기 전에 유틸리티가 예상 문자열 또는 패턴을 기다려야 하는 시간(초)을 지정할 수 있습니다. 시간 제한을 지정하지 않으면 기본값은 30초입니다.

예상 문자열은 인수에 this 정의된 값입니다. 를 정의 this하지 않으면 예상되는 문자열은 기본 쉘 프롬프트 중 하나입니다. 대신 특수 값을 this=None설정하는 경우, 디바이스는 반환되지 않는 셸 명령 실행에 설명된 대로 명령 출력을 캡처하기 전에 시간 초과 기간 동안 대기합니다.

명령 실행을 엇갈리게 하는 방법

경우에 따라 메서드에 대한 run() 여러 호출을 실행하거나 반복할 수 있습니다. 출력을 안정화하기 위해 인수를 지정할 수 있습니다 sleep . 인수는 sleep 디바이스가 버퍼에서 데이터를 받기 전에 지정된 시간(초) 동안 대기하도록 지시합니다. 초 미만의 정밀도를 위해 부동 소수점 숫자로 정의할 sleep 수 있습니다.

반환되지 않는 셸 명령 실행

어떤 경우에는 로컬 라우팅 엔진에서 시작되거나 종료되는 트래픽을 표시하는 명령과 같이 monitor traffic 반환되지 않는 쉘 명령을 실행해야 할 수도 있습니다. Junos CLI monitor traffic 에서 명령은 사용자가 Ctrl+c 키보드 시퀀스를 전송하여 패킷 캡처를 중지할 때까지 실시간으로 정보를 표시합니다.

인수this=NoneStartShell run() 포함하여 메서드를 사용하여 반환되지 않는 셸 명령을 실행할 수 있습니다. 인수를 this=None 포함하면 메서드는 지정된 시간 제한 값이 될 때까지 기다렸다가 셸에서 모든 명령 출력을 검색하고 반환합니다. 이 경우 반환된 튜플의 첫 번째 항목은 실행된 셸 명령의 결과가 콘텐츠를 반환할 때이고 True 두 번째 항목은 명령 출력입니다. 인수를 this 생략하거나 특정 문자열 또는 패턴과 동일하게 설정하면 명령 출력 내에서 기본 프롬프트 또는 지정된 문자열 패턴이 발견될 경우 메서드가 반환되지 않는 명령에 대한 부분 출력을 반환할 수 있습니다.

다음 샘플 코드에서는 monitor traffic interface fxp0 명령을 실행하고 15초 동안 기다린 다음 명령 출력을 검색하여 반환합니다.

변경 내역 테이블

기능 지원은 사용 중인 플랫폼 및 릴리스에 따라 결정됩니다. 기능 탐색기 를 사용하여 플랫폼에서 기능이 지원되는지 확인합니다.

릴리스
설명
2.6.8
Junos PyEZ 릴리스 2.6.8 StartShell 부터 인스턴스는 호스트가 localhost로 설정되거나 포트가 830 또는 정의되지 않은 경우를 제외하고 인스턴스에 정의된 Device 것과 동일한 포트에 연결됩니다.