Эта тема немного старая, извините, но я надеюсь, что все еще могу добавить что-то полезное в тему. (также Йозеф Куфнер написал хороший скрипт, он был просто немного слишком длинным на мой вкус, и он использует 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 или настольных компьютерах.
вы не можете использовать только nc
для пересылки трафика, nc
не имеет keep-alive
или fork
режима
вы должны использовать другие инструменты вместо nc
; например, используйте socat
или ncat
эта команда прослушивает порт 5050
и пересылает все на порт 2020
socat tcp-l:5050,fork,reuseaddr tcp:127.0.0.1:2020
ncat
readmoreNcat - это многофункциональная сетевая утилита, которая читает и записывает данные по сети. данные по сети из командной строки. 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
./redir :1234 1.1.1.1:5678
У меня был похожий вариант использования. Мой должен был слушать внешний порт и перенаправлять его на внутренний порт, который указывал на обратный ssh-туннель.
Внешний порт :8001
Внутренний порт :18820
nc -l -k -p 8001 -c "nc 127.0.0.1 18820"
ЗАДАНИЕ:
Простой способ создать туннель от одного локального порта к другому?
Для перенаправления портов только с помощью 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
Я получаю двоичный файл ! от какого-то парня с xda, который скомпилировал socat, и у меня это работает. После распаковки выполните adb push в /data/local/tmp if и запустите его с помощью приведенного выше примера.