由于 ssh 链接的服务过多,自己都记不清除 iterm profiles 中的快捷键设置的设置是哪个,于是就产生了一个想法,是不是可以写一个 shell 脚本规划和整理这些内容呢?于是就去查看shell的相关语法终于写出了自己的第一个shell脚本。
#!/usr/bin/expect -f
set user root
set host xxx.xxx.xxx.001
set password xxx
set port 22
set timeout -1
spawn ssh $user@$host -p $port
expect "*assword:*"
send "$password\r"
interact
对于 iterm 中配置快捷键 快速连接远程服务 这一段内容想必是并不陌生的了,此处略过。
那么怎才能在只设置一个快捷键的情况下快速的选择自己想要连接的服务呢。
那么就产生了这样一个想法:只写一个shell脚本,让这个脚本动态读取某一个文件夹下所有的原来设置的那些脚本,并且在后续有其他新连接时我只需要写一个新的脚本,不需要更改其他脚本。
具体实现如下:
#!/bin/bash
green="\033[32m"
yellow="\033[33m"
end="\033[0m"
dir="[...path...]/ssh_config/"
ignore="SSHConnect.sh"
files=()
function getFiles () {
i=1
for item in $(ls $dir); do
if [[ ! $ignore =~ $item ]]; then
if [[ $1 ]]; then
echo -e "${green} ${i})${item}${end}"
fi
files[$i-1]=$item
((i++))
fi
done
}
function inputSelect () {
read -p "Please input an option: " opt
if [[ $opt ]]; then
if [[ $opt = "q" || $opt = "Q" ]]; then
echo -e "${yellow} you canceled the select.${end}"
exit
else
tryConnect
fi
else
inputSelect
fi
}
function tryConnect () {
i=${#files[@]}
while [[ $i -gt 0 ]]; do
if [[ $i -eq $opt ]]; then
res=${files[$i-1]}
break
fi
((i--))
done
if [[ $res ]]; then
echo -e "${green}Connecting ${res}. ${end}"
"${dir}${files[i-1]}"
else
inputSelect
fi
}
echo -e "${yellow}Please select you connect server:${end}"
getFiles 1
inputSelect
ssh_config 目录如下
iterm 设置如下
iterm 设置运行结果如下
运行结果
网友评论