改变SecureCrt的Session标题

来源:百度文库 编辑:神马文学网 时间:2024/04/30 19:42:20
改变SecureCrt的Session标题[转载]2009-02-05 18:39

来源: http://blog.alwaysmylove.net/2008/06/23/change-securecrt-window-title-bar-on-the-fly/

恩,很多人使用securecrt很郁闷的一件事情是它的session标题

特别是我们这种通过一个通道服务器登录其他服务器的哥们……每次上去session标题显示的都是保存在书签那个标题

恩……登录服务器太多了,就很容易搞错,今天就郁闷了一会

google了,发现securecrt支持Xterm Escape Sequences,在它自己的帮助里面也写了,恩

可以用这样的命令来指定标题,以下讨论仅适用于shell是bash的情况

  1. echo -ne "\e]2;Title\a"

如果是Linux,可以用下面的命令让标题自动变成本机IP

  1. echo -ne "\e]2;$(ifconfig eth0| awk '{if ( $1 == "inet" && $3 ~ /^Bcast/) print $2}' | awk -F: '{print $2}')\a"

如果是FreeBsd,可以用下面的命令

  1. echo -ne "\e]2;$(ifconfig| awk '{if ( $1 == "inet" && $3 ~ /^netmask/) print $2}' |head -1)\a"

要注意的一点是, PROMPT_COMMAND这个环境变量会覆盖你在命令行输入的Escape Sequences,所以,我们可以用指定PROMPT_COMMAND的方法来改变标题。当然,为了保险,两个都用了……

加到.bash_profile里面每次登陆就会自动修改了

  1. OS=`uname`
  2. if [ $OS = "Linux" ]; then
  3.    echo -ne "\e]2;$(ifconfig eth0| awk '{if ( $1 == "inet" && $3 ~ /^Bcast/) print $2}' | awk -F: '{print $2}')\a"
  4.    export PROMPT_COMMAND="echo -ne \"\\e]2;$(ifconfig eth0| awk '{if ( $1 == "inet" && $3 ~ /^Bcast/) print $2}' | awk -F: '{print $2}')\a\""
  5. elif [ $OS = "FreeBSD" ]; then
  6.    echo -ne "\e]2;$(ifconfig| awk '{if ( $1 == "inet" && $3 ~ /^netmask/) print $2}' |head -1)\a"
  7.    export PROMPT_COMMAND="echo -ne \"\\e]2;$(ifconfig| awk '{if ( $1 == "inet" && $3 ~ /^netmask/) print $2}' |head -1)\a\""
  8. fi

获取IP也可以用其他方法,不喜欢awk的,可以用grep之类的,就跟系统无关了

  1. ifconfig -a|grep -oE '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}'|head -1

当然,ys同学用perl写的脚本也很强大

  1. ifconfig -a|perl -e '{while(<>){if(/inet (?:addr:)?([\d\.]+)/i){print $1,"\n";last;}}}'

当然,大家不要忘了用grep -v来去掉无效的IP哦,比如127.0.0.1等

当然,改标题还有更多很nb的应用,比如ys的定时在标题显示系统负荷,5s刷新一次……当登录几十个服务器的时候,那个壮观呀……