2012-01-11 2 views
1

, 나는, O/I를 않습니다 그래서 같은 과정 procA 가지고 : 호스트 B에netcat 및 fifo를 통해 2 개의 원격 프로세스를 함께 연결하는 방법은 무엇입니까? 호스트 A에

#!/bin/bash 
while sleep 1 ; do 
    # Consume input *if available* 
    if read -t 0.5 x; then # a timed-read 
    # If input is available, output it. 
    echo "HostA Input: $x" 
    fi 

    # Produce some output. 
    echo "HostA Output: $(date)" 
done 

을, 나는 procB이/입력을 태그 유일한 차이점과 매우 유사한 과정, procB이 접두어 (접두어 HostA 대신)이있는 출력.

지금의 표준 입력 'procA에 표준 출력의'난의 표준 입력 'procB에의 표준 출력'procA를 보낼 수있는 netcat을 프로그램 (/usr/bin/nc)를 사용하려면, 그리고 procB.

[HostB]$ nc -l 4000 

[HostA]$ nc HostB 4000 
:이 모든 나의 기대는 호스트 A의 출력이 호스트 B에 표시해야하고, 호스트 B의 출력이 정식 nc 예를 피어 - 투 - 피어 채팅 다음에 일어날만큼 ... 호스트 A에 표시해야한다는 것입니다 나는 다음과 같이 프로세스 procAprocB와 두 호스트에서 인간을 대체하여 을 위의 정식 예제를 확장하려고 할 때

, 그것은 작동하지 않았다 :

호스트 B 에 :

$ mkfifo p 
$ ./procB <p | nc -l 4000 >p 
<WHY NO OUTPUT HERE??> 

3,691,363,210하고, 호스트 A 에 :

$ mkfifo p 
$ ./procA <p | nc HostB 4000 >p 
<WHY NO OUTPUT HERE??> 

참고 :

  1. I 포트 4000는 호스트 B에 열려 있음을 확인했습니다.

호스트 B에 :

$ mkfifo p 
$ ./procB <p | nc -l 4000 >p 

호스트 A 에 :

  • 단방향 통신은 다음과 같은, 을 작동하는 것 같다

    $ ./procA | nc HostB 4000 
    HostB Output: Wed Jan 11 13:53:37 IST 2012 
    HostB Output: Wed Jan 11 13:53:39 IST 2012 
    HostB Input: HostA Output: Wed Jan 11 13:55:02 IST 2012 
    HostB Output: Wed Jan 11 13:53:40 IST 2012 
    HostB Input: HostA Output: Wed Jan 11 13:55:04 IST 2012 
    HostB Output: Wed Jan 11 13:53:41 IST 2012 
    HostB Input: HostA Output: Wed Jan 11 13:55:05 IST 2012 
    HostB Output: Wed Jan 11 13:53:42 IST 2012 
    ^C 
    

    이제 ncnc 바이너리에서 활성화 된 경우 어떻게 든 사용할 수있는 INSECURE 옵션 -e이 제공되지만 -e 옵션을 사용할 수 없다고 가정하면 nc을 통해 서로 2 개의 원격 프로세스를 어떻게 연결할 수 있습니까? ? 기본적으로, 내가 잘못 가고있는 곳은 어디입니까? 위에 표시된 장소에 출력이없는 이유는 무엇입니까? 미리 감사드립니다.

  • 답변