입력과 출력이 FIFO 파이프(fifo_in, fifo_out)로 리디렉션되는 프로세스를 실행하는 Solaris 서버가 있습니다.
SSH를 통해 이 두 파이프에 어떻게 연결할 수 있나요?
나는 ssh를 통해 fifo_in 파이프에 쓸 수 있고 Solaris 프로세스가 파이프를 통해 수신된 명령을 실행하도록 한 다음 물론 fifo_out을 통해 프로세스의 출력을 수신할 수 있기를 원합니다.
SSH나 FTP를 통해 Solaris 서버에 연결할 수 있습니다. netcat이 설치되어 있는지 확실하지 않지만 온라인에서 읽은 내용으로는 그럴 것 같지 않습니다.
편집: 나는 Solaris 프로세스에서 데이터를 구문 분석할 수 있도록 Python(클라이언트 측에서)을 통해 이 모든 작업을 수행하고 싶습니다.
답변1
Python이 IOerror를 발생시키기 때문에 ssh를 통해 직접 unix 파이프를 열 수 없다는 것이 밝혀졌습니다. 약간의 논쟁 끝에 나는 다음과 같은 일을 하기로 결정했습니다. 저는 Python/Paramiko를 사용하여 SSH를 통해 Solaris 서버에서 다음 명령을 실행하고 있습니다.
mkfifo input
sleep 10800 > input &
그러면 입력 파이프가 생성되고 "sleep"을 사용하면 파이프가 열린 상태로 유지됩니다(10800은 초 단위로 3시간입니다). sleep을 사용하지 않으면 파이프에 먼저 일괄 명령을 전달한 후에 파이프가 닫힙니다.
SSH를 통해 전송하여 프로세스를 실행합니다.
nohup process_name < input > output.txt &
그러면 프로세스가 시작되고, 입력 파이프를 표준 입력에 연결하고, 출력을 간단한 텍스트 파일인 output.txt에 추가합니다. SSH 세션의 연결을 끊으면 nohup은 프로세스가 계속 활성 상태인지 확인합니다.
참고: 원래는 출력에 출력 파이프를 사용할 계획이었지만 SSH를 통해 파이프를 열 수 없다는 것이 밝혀졌기 때문에 파이프를 사용해도 이점이 없습니다. 나는 입력을 위해 여전히 파이프를 사용합니다. 왜냐하면 이렇게 하면 내가 보내는 명령을 내 프로세스가 계속해서 수락할 수 있기 때문입니다.
출력은 output.txt에서 쉽게 읽을 수 있지만 입력의 경우 각 명령 배치(프로세스가 실행하길 원하는)를 보냅니다. 먼저 Python 스크립트는 redir.txt라는 새로운 명령 배치를 사용하여 텍스트 파일을 생성한 다음 텍스트 파일의 내용을 파이프로 보냅니다.
cat redir.txt > input
이는 먼저 명령을 입력 파이프로 리디렉션한 다음 프로세스가 파이프에서 명령을 읽습니다.