将stdout重定向到远程终端

时间:2015-04-14 11:33:22

标签: linux bash shell stdout

首先我要说的是,我根本不熟练, 如果之前有人问过/回答过,请道歉。 基本上我已经在我的妈妈笔记本电脑上安装了Ubuntu,我正在寻找一种方法 能够将stdout从她的电脑直接重定向到我自己的终端。

我所拥有的是非常基本但是, 在我的机器上(A)我用

打开一个监听端口
nc -l -v -p (1111)

在我的妈妈机器上(B)

nc -nv x.x.x.x(my IP) 1111 -e /bin/bash

到目前为止一切顺利。 我可以cd /var/logls查看内容, 但是当我尝试morecat文件时,屏幕仍为空白。

如果我做cat messages > /dev/tty 2>&1,她会告诉我,她看到我在自己的终端上输入的内容, 但我根本没有看到内容,只是命令本身。

我也尝试过,在我的终端和机器上打开一个监听端口,

bash -i >& /dev/tcp/x.x.x.x/1111 0>&1.

现在有了这个,我可以看到我的机器(A)'成为'她的机器(B)外壳,但是, 当做猫或更少或等等时,屏幕仍为空白。

我正在使用Debian,从我读过的内容和检查/ dev开始,没有tcp描述符。 如果我按照例子尝试,`

cat messages &> /dev/stdout/x.x.x.x(my IP)/1111

我得到/dev/stdout/x.x.x.x/22: Not a directory

如何将输出直接重定向到终端,而不是重定向到txt文件?

非常感谢,

1 个答案:

答案 0 :(得分:0)

您可以通过多种方式同时连接。这意味着您可以使用VNC查看她在桌面上正在做什么。如果您需要检查某些内容,可以通过SSH 连接连接到当前的VNC会话。这样,您可以在后台运行各种命令(例如安装更新),而不会打扰您的妈妈。

由于VNC的内置安全性不是很好,你可以将两者结合起来。许多VNS客户端都可以选择启用SSH。如果这没有帮助,您可以启动SSH并将远程VNC端口(只需要localhost,而不是整个Internet)的端口转发添加到您的计算机。然后,您可以针对本地端口运行本地VNC客户端,SSH将确保这有效。

ssh -L x:localhost:y snoopy
  

表示“启动与snoopy的SSH连接,并在我的计算机上侦听端口x,并将其中的任何连接转发到snoopy上的端口y。”

要将远程显示器:1连接到本地显示器:1,请使用:

ssh -L 5901:localhost:5901 moms-computer

更长的解释:http://www.cl.cam.ac.uk/research/dtg/attarchive/vnc/sshvnc.html

[编辑] 至于为什么捕获某些命令的输出不起作用:某些命令(如less)期望TTY(一个真正的终端能够移动光标周围,显示颜色等)作为标准输出。将stdout重定向到管道或文件时,这些不起作用或无法正常工作。

现在为什么cat不起作用?您的命令仅重定向stdout。如果cat找不到该文件,则错误将打印到stderr,而不是stdout,您将看不到任何内容。

这是ls工作时我能想到的唯一原因; lscat都是简单的命令,不关心TTY。它们都从父进程继承了它们的stdout,并且它们都没有对stdout做任何特殊操作(好吧,ls --color从termcap获取转义序列。)