как заставить сервер netcat отвечать на другой порт

Мне нужно смоделировать сценарий (под UDP, если это имеет значение)

1) сервер nc прослушивает порт 9000 (ncserver1) 2) клиент nc подключается к серверу nc и отправляет «message1», и одновременно запускается другой сервер nc, который прослушивает порт 9001 (ncserver2) 3) при получении «message1» ncserver1 должен инициировать подключение к ncserver2 и отправить «message2» 4) ncserver2 получает сообщение «mess»


person binithb    schedule 21.08.2013    source источник


Ответы (1)


Это интересный сценарий. Первое, что нужно сделать, это запустить netcat на 9000 в ожидании message1. sed используется для фильтрации всех сообщений, кроме сообщения1, и для создания сообщения2, которое будет отправлено при получении сообщения1.

nc -u -l -p 9000 | sed -un 's/message1/message2/p' |./delayed_netcat.sh  -u localhost 9001

delayed_netcat.sh — это скрипт от mariux

#!/bin/bash
read line
netcat "${@}" < <(echo $line ; cat)

что задерживает подключение к 9001, пока ему не нужно что-то отправить.

Затем мы запускаем еще один netcat, прослушивающий 9001, и в то же время отправляем message1 на 9000.

nc -u -l -p 9001 | sed -un "s/message2/mess/p" &  echo "message1" |nc -u localhost 9000

Здесь sed используется для поиска message2 и вывода беспорядка.

person Bill    schedule 14.09.2013