FS_SHELL 함수 블록

FS_SHELL 함수 블록은 원격 시스템에서 하나 이상의 명령어를 인터랙티브 쉘에서 실행합니다.

주의: 시스템 명령어는 원격 시스템을 위협하거나 손상시킬 수 있습니다. 또한 기존 파일이 경고 없이 덮어쓸 수 있습니다.

파일 시스템은 FS_INIT를 사용하여 먼저 초기화되어야 합니다. 모든 작업은 각 저장 매체별로 비동기적으로 수행됩니다.

RUN 입력

양의 에지에서 지정된 명령어가 실행됩니다.

DEV 입력

저장 매체에서 어떤 파일들에 접근할지를 정의합니다. 장치는 프로젝트별로 사용되며, 프로젝트 외부 저장 컨텍스트 메뉴에서 관리할 수 있습니다.

PATH 입력

저장 매체에 있는 디렉토리의 경로를 지정합니다. 이 경로는 UTF-8 형식의 Unix 파일 경로와 같습니다(지원되는 경우). 경로는 다음과 같이 표시됩니다:

폴더/하위 폴더

경로 사용은 선택 사항입니다. 경로가 설정된 경우, 해당 디렉토리로 전환하는 것이 성공해야 합니다. 그렇지 않으면 실행할 명령어가 실행되지 않습니다.

CMD 입력

실행되어야 할 모든 명령어를 정의합니다. 모든 명령어는 줄 끝으로 종료되어야 합니다. 예를 들어: "ls\n". 줄 끝이 사용되지 않으면 명령어가 실행되지 않을 것입니다. 명령어는 서버의 피드백 후 줄별로 실행됩니다.

모든 명령어를 실행한 후에는 "exit\n"을 보내 연결을 즉시 종료하고 값을 반환해야 합니다. 그 후 추가 명령어를 보내면 안 됩니다. 그렇지 않으면 ERROR 출력이 TRUE로 설정됩니다.

참고: 연결이 예상치 않게 종료되고 명령어가 전송되지 않은 경우, ERROR 출력이 TRUE로 설정됩니다.

PTY 입력

콘솔 유형(Pseudo-Terminal)을 정의합니다. 일부 장치에서는 이 매개변수가 필수적입니다. 예: "vanilla", "exec", "vt100", "vt102", "ansi", "xterm" 등. 값이 정의되지 않으면 "vanilla"가 사용됩니다.

"exec" 값은 SSH 명령어를 통해 운영 체제에서 요청을 실행합니다. 따라서 더 현대적인 방법을 사용합니다. 그러나 이 방법은 약간 비효율적입니다. ENV 입력은 연결 전에 설정되므로 무시될 수 있습니다. SIZE 입력은 이 방법에서 무시됩니다.

추가 SSH 매개변수가 전달되어야 하는 경우, "exec" 다음에 각각 새로운 줄에 추가할 수 있습니다. 매개변수는 대소문자를 구분하며 다음과 같이 지정됩니다. 이 예제는 오래된 장치에서 RSA 알고리즘을 활성화합니다.

exec
HostKeyAlgorithms=+ssh-rsa
PubkeyAcceptedAlgorithms=+ssh-rsa

다음 매개변수가 사용할 수 있습니다:

exec을 위한 SSH 매개변수 예시 값
KexAlgorithms +diffie-hellman-group1-sha1
Ciphers +aes128-cbc
HostKeyAlgorithms +ssh-rsa
PubkeyAcceptedAlgorithms +ssh-rsa
ConnectTimeout 10
ServerAliveInterval 30
ServerAliveCountMax 3

참고: 추가 정보는 외부 문서를 참조하세요: https://linux.die.net/man/5/ssh_config (영어)

ENV 입력

활성 환경 변수를 정의합니다. 여러 변수를 지정하려면 각 줄에 하나씩 정의할 수 있습니다. 예:

LANG=en_US.UTF-8
LC_ALL=en_US.UTF-8

SIZE 입력

터미널의 크기를 정의합니다. 기본적으로 문자로 지정되지만 픽셀로도 정의할 수 있습니다. 예를 들어: "80x25" 또는 "640x480px". 값이 정의되지 않으면 "80x25"가 사용됩니다.

RECV_PT 입력

T# 형식의 명령어별 데이터 수신 타임아웃을 정의합니다. 타임아웃이 정의되지 않으면 T#150ms가 사용됩니다. 이 값이 너무 낮으면 데이터 출력 중 여러 명령어가 실행될 것입니다.

TIMEOUT 입력

모든 명령어를 실행하기 위한 타임아웃을 T# 형식으로 설정합니다. 이 타임아웃이 도달되면 연결이 종료되고 값이 반환됩니다. ERROR가 TRUE로 설정됩니다. 타임아웃은 연결 설정 및 인증 후 평가됩니다. PTY 입력이 "exec"으로 설정된 경우, 실행 시간이 전체 기간에 대해 평가됩니다. 타임아웃이 정의되지 않으면 T#300s가 사용됩니다.

DONE 출력

출력은 성공 시 다음 작업을 수행하기 위해 펄스를 반환합니다. 펄스는 작업이 종료될 때 발생하며, 오류가 발생한 경우에도 발생합니다.

RETURN 출력

명령어 실행 시 반환 값을 반환합니다. 값은 나중에 사용할 수 있도록 저장됩니다.

참고: 콘솔이 출력을 형식화하므로 제어 문자 또는 이진 데이터가 포함될 수 있습니다.

RETERR 출력

명령어 실행 시 오류 발생 시 반환 값을 반환합니다. SSH에서는 STDERR라고도 합니다. 값은 나중에 사용할 수 있도록 저장됩니다.

참고: 콘솔이 출력을 형식화하므로 제어 문자 또는 이진 데이터가 포함될 수 있습니다.

ERROR 출력

오류 발생 시 오류 메시지가 포함된 텍스트를 반환합니다. 이는 FALSE이며, 오류가 발생하지 않은 경우입니다. 상태는 나중에 사용할 수 있도록 저장됩니다.

가능한 원인:

  • 저장 매체의 서비스가 시작되지 않았습니다.
  • 저장이 초기화되지 않았습니다.
  • 로그인 정보가 유효하지 않습니다.
  • 원격 서버에 연결할 수 없습니다.
  • 저장 매체가 존재하지 않습니다.
  • 지정된 경로가 유효하지 않습니다.
  • 저장 매체에 쓸 수 없습니다.
  • 저장에 공간이 없거나 저장 매체가 쓰기 보호됩니다.
  • 모든 명령어가 전송되기 전에 연결이 예상치 않게 종료되었습니다.
  • 정의된 타임아웃이 도달되었습니다.

참고