在SecureCRT之类的终端仿真程序的标题显示远程server的全部ip地址
Posted on 8月 27th, 2005 作者 哈哈
作为系统管理员
大概都有这种体会
管理的机器多了
经常同时用终端仿真程序连好几台机器
而且需要一会儿在这台上操作、一会儿又需要在那台机器上操作
很容易搞混机器:)
bash通过环境变量PROMPT_COMMAND支持在显示提示符PS1之前执行命令
而且xterm的终端类型又支持更改标题
所以……呵呵
我用bash的环境变量PROMPT_COMMAND+xterm
可以说已经解决了这个问题
具体的方法是
vi /etc/sysconfig/bash-prompt-xterm
添加一行,像下面这样:
echo -ne "\e]2;$(/sbin/ip -4 -o addr show | awk ‘{print $4}’ | awk -F/ ‘{print $1}’ | grep -v "^127\." | sed -e :a -e ‘$!N;s/\n/\//g;ta’)\a"
如果终端显示模式不是xterm的话
需要用命令export TERM=xterm将终端显示模式设置成为xterm
即可
其实这个问题也有别的解决方法
把每台机器的hostname设成这台机器的ip
然后再通过环境变量PS1来把ip地址显示在提示符里
不过这需要把环境变量PS1中的\h改成\H
\H能显示完整的ip地址
\h只能显示一个字节
像这样:
export PS1="[@\H \W]\\$ "





/etc/sysconfig/bash-prompt-xterm的最新版本是这样的:
echo -ne “\e]2;$(ifconfig | awk ‘/inet addr:/ && ! /inet addr:127\./ { sub (”addr:”, “”); print $2 }’ | sed -e :a -e ‘$!N;s/\n/\|/g;ta’):${PWD}\a”