Использование netcat для перенаправления портов

Эта тема немного старая, извините, но я надеюсь, что все еще могу добавить что-то полезное в тему. (также Йозеф Куфнер написал хороший скрипт, он был просто немного слишком длинным на мой вкус, и он использует PHP)

Мне также нужен был инструмент, как описано в оригинальном вопросе (чтобы отправить сообщение всем активным X-пользователям). И основываясь на ответах здесь, я написал этот небольшой скрипт только bash, который ищет активных X-пользователей (используя «кто»), а затем запускает notify-send для каждого активного пользователя.

И самое лучшее: вы можете использовать мой скрипт точно так же, как "notify-send", со всеми его параметрами! ;-)

notify-send-all:

#!/bin/bash
PATH=/usr/bin:/bin

XUSERS=($(who|grep -E "\(:[0-9](\.[0-9])*\)"|awk '{print $1$5}'|sort -u))
for XUSER in $XUSERS; do
    NAME=(${XUSER/(/ })
    DISPLAY=${NAME[1]/)/}
    DBUS_ADDRESS=unix:path=/run/user/$(id -u ${NAME[0]})/bus
    sudo -u ${NAME[0]} DISPLAY=${DISPLAY} \
                       DBUS_SESSION_BUS_ADDRESS=${DBUS_ADDRESS} \
                       PATH=${PATH} \
                       notify-send "$@"
done

Скопируйте приведенный выше код в файл с именем "notify-send-all", сделайте его исполняемым и скопируйте в /usr/local/bin или /usr/bin (как вам нравится). Затем запустите его, например, как root в консольном сеансе, например:

notify-send-all -t 10000 «Предупреждение» «Судно на воздушной подушке полно угрей!»

Я использую его уже несколько месяцев, на разных машинах, и до сих пор не было никаких проблем, и я протестировал его с настольными компьютерами MATE и Cinnamon. Также успешно запускается его внутри cron и anacron.

Я написал этот скрипт для / под ArchLinux, поэтому, пожалуйста, скажите мне, если у вас возникли проблемы на других дистрибутивах Linux или настольных компьютерах.

17
01.07.2016, 17:45
4 ответа

вы не можете использовать только nc для пересылки трафика, nc не имеет keep-alive или fork режима

вы должны использовать другие инструменты вместо nc; например, используйте socat или ncat


эта команда прослушивает порт 5050 и пересылает все на порт 2020

socat tcp-l:5050,fork,reuseaddr tcp:127.0.0.1:2020

Ncat - это многофункциональная сетевая утилита, которая читает и записывает данные по сети. данные по сети из командной строки. Ncat была написана для проекта Nmap как значительно улучшенная реализация старинной утилиты Netcat. Это

ncat -l localhost 8080 --sh-exec "ncat example.org 80"

И вы можете использовать другой инструмент:

Слушать порт 1234 и перенаправлять на порт 4567 по адресу "1.1.1.1"

./proxy tcp -p ":1234" -T tcp -P "1.1.1.1:4567"

Слушать порт 1234 и перенаправлять на порт 4567 по адресу "1. 1.1.1" source

./gost -L tcp://:1234/1.1.1.1:4567
51
27.01.2020, 19:47

У меня был похожий вариант использования. Мой должен был слушать внешний порт и перенаправлять его на внутренний порт, который указывал на обратный ssh-туннель.

Внешний порт :8001

Внутренний порт :18820

nc -l -k -p 8001 -c "nc 127.0.0.1 18820"

ЗАДАНИЕ:

Простой способ создать туннель от одного локального порта к другому?

Как я могу оставить соединение netcat открытым?

2
19.07.2020, 04:39

Для перенаправления портов только с помощью netcat вы можете использовать каналы:

mkfifo pip
nc -l -p port_to_listen < pip | nc target_ip port_to_be_forwarded > pip

или:

nc target_ip port_to_be_forwarded < pip | nc -l -p port_to_listen > pip
0
05.03.2021, 20:32

Я получаю двоичный файл ! от какого-то парня с xda, который скомпилировал socat, и у меня это работает. После распаковки выполните adb push в /data/local/tmp if и запустите его с помощью приведенного выше примера.

0
04.11.2021, 01:59

Теги

Похожие вопросы