Перенаправление терминала Bash на другой терминал - PullRequest
5 голосов
/ 27 июня 2011

У меня порт netcat, прослушивающий порт 1501, и я хочу передать полученный вход с этого порта в новое окно терминала.Я знаю, что это плохая идея, потому что в принципе любой человек в этом порту может управлять машиной, но я хочу выяснить, возможно ли это сделать.Кто-нибудь знает, как.Я пробовал это до сих пор.

nc -l 1500 |xterm или nc -l 1500 |xterm -e "NAMEOFWINDOW"

также попытался перенаправить на gnome-терминал простым способом.Я могу сделать

NC-L 1500 |grep "SOMEKEYWORD" успешно.

Есть идеи?-TJ

Ответы [ 3 ]

2 голосов
/ 28 июня 2011

У вас две проблемы.Во-первых, xterm и gnome-terminal - это не те программы, которые предоставляют команды приглашения и принятия, а просто способ подключения клавиатуры и экрана к этой программе, которая является вашей оболочкой (обычно /bin/bash).Итак, на самом деле bash вы хотите подключить к netcat.

Во-вторых, вам нужно больше, чем просто однонаправленный канал, который вы получаете с |.Если вы используете:

nc -l -p 1500 | /bin/bash

, то у вас будет только труба от пользователя до bash - они смогут дать ввод, ноне увидит никакого выхода.В качестве альтернативы, если вы сделаете:

/bin/bash | nc -l -p 1500

, тогда будет применено обратное - у вас будет только канал до пользователя с bash.Пользователь увидит вывод из bash, но не сможет дать никакого ввода.

К счастью, netcat поддерживает возможность создания двунаправленного канала (фактически, двух каналов) для другой команды:

nc -l -p 1500 -e /bin/bash

Это будет делать то, что вы хотите - но учтите, что bash не будет отображать приглашение, так как оно будет работать в «неинтерактивном» режиме.

О, и еще одна вещь- да, это действительно плохая идея.

1 голос
/ 27 июня 2011

Это невозможно, так как xterm не принимает ввод на stdin , он непосредственно перехватывает ввод с клавиатуры.

Есть две альтернативы:

  • используйте bash вместо xterm: nc -l 1500 | bash в xterm
  • используйте опцию xterm s -S, но вам нужно предварительно подключить netcat к псевдотерме, а затем присоединить xterm к псевдотерминалу
0 голосов
/ 28 июня 2011

Вы можете использовать tee для перенаправления вывода во временный файл, а затем tail --follow=name --retry в другом терминале.

nc -l 1500 | tee /tmp/file.txt

и, конечно:

tail --follow=name --retry /tmp/file.txt

Таким образом, вы можете выполнить rm -f /tmp/file.txt через задание cron без прерывания команды tail.

...