于是我回归到了使用Linux的命令行终端,通过创建多个alias来满足不同的ssh参数的情况,比如有的需要用key,有的需要用密码;再将所有的服务器添加到某个文本文件中以列表的方式进行更新,同时将其内容作为这些alias的自动完成列表,用起来感觉非常不错。
具体配置:
定义alias
代码如下 |
复制代码 |
[dong.guo@heydevops ~]$ vim .bashrc
alias sshads='ssh -t -i /home/dong.guo/workspace/sshkeys/key_adsymp -l adsymp'
alias sshrootdraw='sshpass -p "drawbridge" ssh -l root'
alias sshrootkey='ssh -t -i /home/dong.guo/workspace/sshkeys/key_root -l root'
创建服务器列表文件,输入所有的服务器主机名
[dong.guo@heydevops ~]$ head -n 10 /home/dong.guo/workspace/autocomp/servers.list
api1e
api2e
api3e
c1e
c2e
c3e
c4e
c5e
cb1e
cb2e
|
给创建的alias加上自动完成功能 www.111com.net
代码如下 |
复制代码 |
[dong.guo@heydevops ~]$ vim .bashrc
# Enable auto-completion of servers via sshads, sshrootdraw and sshrootkey
function _servers() {
COMPREPLY=()
local cur=${COMP_WORDS[COMP_CWORD]};
local com=${COMP_WORDS[COMP_CWORD-1]};
case $com in
'sshads')
local servers=($(cat /home/dong.guo/workspace/autocomp/servers.list))
COMPREPLY=($(compgen -W '${servers[@]}' -- $cur))
;;
'sshrootdraw')
local servers=($(cat /home/dong.guo/workspace/autocomp/servers.list))
COMPREPLY=($(compgen -W '${servers[@]}' -- $cur))
;;
'sshrootkey')
local servers=($(cat /home/dong.guo/workspace/autocomp/servers.list))
COMPREPLY=($(compgen -W '${servers[@]}' -- $cur))
;;
esac
}
complete -F _servers sshads
complete -F _servers sshrootdraw
complete -F _servers sshrootkey
使配置生效
[dong.guo@heydevops ~]$ source .bashrc
|
优雅的敲下TAB键来体验自动完成所带来的快感,