|
|
发表于 2007-4-12 00:15:04
|
显示全部楼层
Post by kingbo
export:你用的不是bash
我说的是你那一整行export不对,不是说export不对,从99年开始用linux以来我就没怎么用过bash以外的shell.
Post by kingbo
$SSH_CLIENT:我怀疑你没开始sshd
没开sshd,我怎么远程登录上去的?
[user@keg user]$ echo $SSH_CLIENT
XXX.XXX.XXX.XXX 49826 22
上面是一台远程的Solaris的机器的输出, XXX.XXX.XXX.XXX就是ssh client的IP
[user@fspc068 ~]$ echo $SSH_CLIENT
XXX.XXX.XXX.XXX 42809 22
上面是一台远程的fc5的输出。
按照你的方法:
echo $SSH_CLIENT |awk -F '[: ]' '{print $4}'
能得到什么有用的东西? 总共只有3个fields,哪里来的$4,而且域之间的分割符就是空格,和冒号没啥关系,有必要用-F'[: ]'么? 老弟确切知道-F '[: ]'是干什么用的吗? 可以改变这些环境变量的值的格式,比如用冒号作分割符,多输出几个域什么的,不过目前偶还没看见有人这么干,你是这么设定的么?
Post by kingbo
awk:你认为它不好用?
我可没说它不好用,相反,我一直用的挺欢。 不过做这么简单的事情还是就不劳他老人家了,如果你用bash,
假设SSH_CLIENT值为: 123.123.123.123 4567 22这种样子
试试看这个是不是你想要的:
export DISPLAY=${SSH_CLIENT%% *}:0.0
当然用了awk也没啥问题,所以偶说可以理解。
Post by kingbo
cut:请你给出更好的方法
更好的办法就是根本就不用cut,如上所述,在我所知的大多数情况下:SSH_CLIENT的格式应该像这样:
123.123.123.123 4567 22
那么echo $SSH_CLIENT | awk '{print $1}'完之后的结果就是
123.123.123.123
你直接用
export DISPLAY=`echo $SSH_CLIENT | awk '{print $1}'`:0.0
不就是你需要的结果
123.123.123.123:0.0
了么? 在这用cut是多此一举。 我不知道你那里的环境如何,即便这句得不到你想要的结果,在一个awk(或者只用cut不用awk)里面处理一下就可以,我相信没必要再多起一个cut进程。你认为一定有必要只能说是你awk(或者shell script)不熟。
总之,这些都不如直接ssh -X或者-Y来得直接方便安全, man ssh看一下或者搜索一下什么是X forwarding不愿意么? 正如版主说的,干嘛不用? |
|