+ -
当前位置:首页 → 问答吧 → 充分发挥你的丰富想象力

充分发挥你的丰富想象力

时间:2003-11-22

来源:互联网

我连续给大家出了两次题目,承蒙众位捧场,在这里再谢过了!!!
出题的目的是想让大家搞安装/玩Xwindows/中文化的同时对unix基础有更深的认识,
第一次题目不满意,有点牵强。第二次看似简单,其实问题有一定难度,考概
念的同时也考了“fork" 这一Unix 基本概念,有精力的兄弟可以看看shell源码,甚
至可以写个自己的简单shell玩。

受javalee的关于屏幕定位显示启示,这会再给出道题,不过要说明:这次和上两次
不同,不是考大家,而是要充分发挥你的丰富想象力,也没有唯一答案,可以查书,
看字典,和人商量。。。我会在合适的时候把我的想法说出来。

1。 话说有两位朋友,各自天在一方,没电话,没邮局,但却每人有一台电脑可以
连上(ssh/telnet)同一台X服务。他们的电脑上没有web browser, IM 之类的东西,
也不能在自己的电脑上建个什么服务器之类。再说连接方式也只有ssh/telnet,其
它可传送文件的(scp/rcp)的方式也不行。每人都有一个上X服务器的普通账户,但
是X服务器管理员坏透了,因为每人最多只可以有两个session 的终端 tty, 像一点
儿样的程序(wall/talk/rwall)也没有。两位朋友没有权力在系统上安装任何程序,
每人在服务器账号的磁盘都只有10bytes大,/tmp 下也之有1byte大小空余 (真缺德,不
活了)。现在问题来了:请问两位朋友如果想在这种非人的情况下怎么相互传送问候
(俩人同时在线)的信息?

别忘了我们是在玩Unix哟, 要用它的基础知识去解决.

作者: werix   发布时间: 2003-11-22

who看谁在线?再怎么做就有点想不起来了!

作者: rainren   发布时间: 2003-11-22

说的不怎么详细,什么是问候信息?,ping一下算吗?

作者: home   发布时间: 2003-11-22

sorry, 问候信息 means send some short messages here. But I forget another condition, on the X server side, there are no sendmail/Mail installed.

yes, finger/who/rusers can show all online users...

please continue...

作者: werix   发布时间: 2003-11-22

重定向

作者: KornLee   发布时间: 2003-11-23

引用:
最初由 javalee 发表
重定向
怎么重定向??

作者: home   发布时间: 2003-11-23

??? redirection? 说说具体做法吧。。。

引用:
最初由 javalee 发表
重定向

作者: werix   发布时间: 2003-11-23

就是把终端1的屏幕信息重定向到终端2
在tty1:
echo "hello" >/dev/tty2
在tty2:
echo "Hi">/dev/tty1
这样不就实现了两个终端用户的简单通信了嘛`~

作者: KornLee   发布时间: 2003-11-23

在server上
ssh -R 23:localhost:23 -l root oneclientIP 如何??

作者: eTony   发布时间: 2003-11-23

javalee 有了第一个答案
eTony 的隧道办法忘了我的条件,就是两位没有管理员的权力。
我还想到两个方法。。。
大家说说

作者: werix   发布时间: 2003-11-24

history ??

呵呵

作者: eTony   发布时间: 2003-11-24

eTony 的办法确实没想到,另外其他人就没主意了?
我给大家提个醒:mkfifo ,谁能把题做完?

作者: werix   发布时间: 2003-11-26

好! :2cool 虽然我不懂,也要叫声好。werix可以当老师了。

作者: windrose   发布时间: 2003-11-26

mkfifo :ask
看眼啦~~ ,不过确实没用过! :(,werix兄别卖关子啦~~,给兄弟们讲讲吧~~!我觉得我用的重定向已经抛弃了外部的命令啦,难道这个命令会....

作者: KornLee   发布时间: 2003-11-26

好吧,我想到三种办法,第一个也是最自然的(最合理)就是javalee的 重定向, 第二个近乎于耍赖(给自己开了后门),第三个就是mkfifo:
做法如下:

user A 在终端1
1. mkfifo /tmp/tubeA
2. cat > /tmp/tubeA
在这里输入给userB信息,前提是user B已经做了6。

user B 在终端2也做
3. mkfifo /tmp/tubeB
4. cat > /tmp/tubeB
在这里输入给userA信息,前提是user A已经做了5。

user A 在终端3看信息
5. cat /tmp/tubeB

user B 在终端4一样
6. cat /tmp/tubeA

我觉得大家都听说过FIFO,但是具体用的没有,就想出这个馊点子。。。

第二个办法是用screen, screendump - 我只说过服务器上没装(sendmail....) 但没说过有什么(钻空子),哈哈。

eTony 的办法是我没想到的,让我确实吃了一惊 (高哇!!!!)

多谢大家了!

windrose: 当老师可不敢,这坛子太冷清,让大家热闹一下而已 :)

作者: werix   发布时间: 2003-11-26

引用:
最初由 werix 发表

eTony 的办法是我没想到的,让我确实吃了一惊 (高哇!!!!)

不敢,

在清除RemoteServer上的history时突然想到的,嘿嘿

作者: eTony   发布时间: 2003-11-26