standalone server

이를 이용하면 non-socket programming binary도 standalone server로 동작할 수 있다.
근데 하나의 connection만 처리할 수 있으며 connection이 종료되면 nc도 꺼진다.
```bash
$ nv -vvv -e /bin/sh -l -p 1234
```

```bash

$ rm -f /tmp/f; mkfifo /tmp/f

$ cat /tmp/f | /bin/sh -i 2>&1 | nc -vvv -l -p 1234 > /tmp/f

```


* `` -i`` 는 interactive 옵션인데, 대화형 모드로 띄워준다.

interactive mode

startup file을 읽어들이고, 프롬프트를 표시해준다.

interactive mode를 백그라운드로 돌리면, 사용자 입력을 대기하며 멈춰있게 된다.


non-interactive mode

startup file을 읽어들이지 않는다. 쉘스크립트같은 경우 백그라운드에서 사람의 입력 없이 돌아가야 하는게 대부분이므로, 기본적으로 non-interactive mode로 동작한다.

그러나 이 것이 non-interactive mode가 사용자 입력을 받을 수 없다는 뜻은 아니기 때문에, nc server에서 non-interactive mode로 쉘을 열어 놓았다고 해도 사용자와의 입출력이 가능해 쉘이 정상적으로 동작한다.


Note ) socat을 활용해 remote로 포팅하는 방법도 있다.

```

socat tcp-listen:9090,fork,reuseaddr exec:/path

```


Basic

server :

```bash

nc -vvv -l -p 8888

```

client :

```bash

nc servIP 8888

```


파일 전송

server :

```bash

nc -l -p 8888 > output

```

client :

```bash

nc servIP < input 또는 cat input | nc servIP 8888

```

`` input, output`` 방향 반대로 해도 가능하다.




'OS > LINUX & UNIX' 카테고리의 다른 글

[shell] pipe  (0) 2016.11.03
PLT, GOT  (0) 2016.11.01
xinetd / micro-inetd  (0) 2016.09.26
Shell shock  (0) 2016.08.15
리눅스 파일 설치과정 / Makefile 작성 / 윈도우에서 make하기. nmake  (0) 2016.08.15