산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Manufacturing Technology >> 산업기술

Curl을 사용한 IEC 61131-3에서 보안 SFTP 업로드 구현하기

몇 주 전 다음 질문을 받았습니다. ESM에서 실행되는 프로그램을 사용하여 로깅 파일을 SFTP 서버로 업로드해야 합니다.
SSH 파일 전송 프로토콜(Secure File Transfer Protocol, SFTP)은 신뢰할 수 있는 데이터 스트림을 통해 파일 액세스, 파일 전송, 파일 관리를 제공하는 네트워크 프로토콜입니다. 인터넷 엔지니어링 태스크 포스(IETF)가 보안 셸 프로토콜(SSH) 버전 2.0의 확장으로 설계하여 안전한 파일 전송 기능을 제공합니다.

SFTP는 PLCnext 펌웨어에 포함되어 있으므로 문제가 되지 않아야 합니다.

1단계: 구조화된 텍스트를 사용하여 로깅 파일을 생성하기 시작했습니다. 방법은 여기서 찾을 수 있습니다:

https://www.plcnext-community.net/en/hn-makers-blog/438-datalogging-in-iec-61131-3-the-basic-principle.html

https://www.plcnext-community.net/en/hn-makers-blog/447-datalogging-in-iec-61131-3-create-your-own-file-manager.html

2단계: PLC 애플리케이션을 테스트하기 위한 SFTP 서버가 필요했습니다. 제 랩톱에서 실행 중인 가상 머신에 설치한 CrushFTP를 사용했습니다.

소프트웨어 설치 후 웹 인터페이스용 관리 사용자를 생성해야 합니다. 완료되면 PLC 액세스용 사용자를 생성할 수 있습니다.

이 예제: 사용자 = PLCnext, 비밀번호 = 123456789

3단계: 명령줄을 사용하여 파일 업로드.

Curl을 사용한 IEC 61131-3에서 보안 SFTP 업로드 구현하기

위 스크린샷에서 먼저 명령을 주고 두 번째 단계에서 비밀번호를 입력하는 것을 볼 수 있습니다. "PBCL_SysLinuxShell_1" FB를 사용하여 이 절차를 자동화하려면 한 줄 명령이 필요합니다.

이 FB는 PLCnextBase 라이브러리에서 찾을 수 있습니다. (https://www.plcnextstore.com/#/720)

따라서 파일 업로드를 수행하기 위한 다른 명령이 필요합니다. Curl을 살펴보겠습니다.

Curl을 사용한 IEC 61131-3에서 보안 SFTP 업로드 구현하기

펌웨어 2020.6.1과 함께 설치된 버전은 SFTP를 지원하지 않습니다. Oliver Warneke 덕분에 다른 버전의 Curl을 설치할 수 있었습니다. 전체 설치 과정을 거치지는 않겠지만, 결과는 SFTP를 지원하는 버전입니다. 펌웨어 2021.0.0 LTS부터 다음 버전을 사용할 수 있습니다.

Curl을 사용한 IEC 61131-3에서 보안 SFTP 업로드 구현하기

Curl 덕분에 이제 다른 명령을 사용할 수 있습니다.

curl -k -sS --key ~/.ssh/id_rsa --max-time 25 --connect-timeout 10 "sftp://192.168.1.50:22/test/Upload/" --user "PLCnext:12345679" -T "/opt/plcnext/Test.pdf" --ftp-create-dirs

이 명령을 Shell FB에 사용하면 다음 로그 파일에서 결과를 확인하여 프로그램을 체크할 수 있습니다.

/opt/plcnext/PLCnextBase.ServiceProvider.log

인수에 대한 설명:

-k, --insecure

(TLS) 기본적으로 curl이 만드는 모든 SSL 연결은 안전한지 검증됩니다. 이 옵션을 사용하면 인증서 저장소를 사용하여 서버의 인증서에 올바른 이름이 포함되어 있고 성공적으로 검증되는지 확인함으로써 서버 연결을 검증합니다.

-S, --show-error

-s, --silent와 함께 사용하면 실패 시 오류 메시지를 표시합니다.

-s, --silent

무음 모드. 진행 미터나 오류 메시지를 표시하지 않습니다. Curl을 무음으로 만듭니다. 여전히 요청한 데이터를 출력하며, 리디렉션하지 않는 한 잠재적으로 터미널/stdout에도 출력합니다. 이 옵션에 -S, --show-error를 추가하여 진행 미터는 비활성화하지만 오류 메시지는 계속 표시합니다.

--key <key>

(TLS SSH) 개인 키 파일 이름. 별도 파일로 개인 키를 제공할 수 있습니다. SSH의 경우 지정하지 않으면 curl은 다음 후보를 순서대로 시도합니다: '~/.ssh/id_rsa', '~/.ssh/id_dsa', './id_rsa', './id_dsa'.

-m, --max-time <seconds>

전체 작업에 허용하는 최대 시간(초). 느린 네트워크나 링크 다운으로 인해 배치 작업이 몇 시간 동안 중단되는 것을 방지하는 데 유용합니다.

--connect-timeout <seconds>

curl의 연결에 허용하는 최대 시간(초). 이는 연결 단계만 제한하므로, 주어진 기간 내에 curl이 연결되면 계속 진행되고, 그렇지 않으면 종료됩니다.

-T, --upload-file <file>

지정된 로컬 파일을 원격 URL로 전송합니다. 지정된 URL에 파일 부분이 없으면 curl은 로컬 파일 이름을 추가합니다.

--ftp-create-dirs

(FTP SFTP) FTP 또는 SFTP URL/작업이 서버에 현재 존재하지 않는 경로를 사용하는 경우, curl의 표준 동작은 실패하는 것입니다. 이 옵션을 사용하면 curl은 누락된 디렉토리 생성을 시도합니다.

참조:

https://en.wikipedia.org/wiki/SSH_File_Transfer_Protocol

https://www.crushftp.com/index.html

https://curl.se/docs/manpage.html

산업기술

  1. SPICE와 명령줄 인터페이스(CLI) 사용법
  2. 산업용 IoT로 성장 견인하기: 비용 절감을 넘어
  3. 전력 변압기 효율 평가 위한 4대 핵심 시험
  4. 정전 피해 예방: 비즈니스를 지키는 5가지 필수 전략
  5. 브라운아웃 vs 블랙아웃: 차이점과 비즈니스 영향 완벽 이해
  6. 디젤 발전기 유지보수 빈도에 영향을 미치는 핵심 요인들
  7. 적절한 비상 발전기 선택: 신뢰할 수 있는 전력을 위한 4가지 핵심 질문
  8. 테슬라 버추얼 파워 플랜트: 글로벌 에너지 그리드의 변혁
  9. 에너지 모니터링이 인더스트리 4.0 효율을 이끄는 방법: 전문가 웨비나 안내(4/3)
  10. 공장 효율성 증대: 팀워크 마스터로 우수한 관리 실현