由于 ssh 鏈接的服務(wù)過(guò)多宾肺,自己都記不清除 iterm profiles 中的快捷鍵設(shè)置的設(shè)置是哪個(gè)溯饵,于是就產(chǎn)生了一個(gè)想法,是不是可以寫一個(gè) shell 腳本規(guī)劃和整理這些內(nèi)容呢锨用?于是就去查看shell的相關(guān)語(yǔ)法終于寫出了自己的第一個(gè)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
對(duì)于 iterm 中配置快捷鍵 快速連接遠(yuǎn)程服務(wù) 這一段內(nèi)容想必是并不陌生的了,此處略過(guò)增拥。
那么怎才能在只設(shè)置一個(gè)快捷鍵的情況下快速的選擇自己想要連接的服務(wù)呢啄巧。
那么就產(chǎn)生了這樣一個(gè)想法:只寫一個(gè)shell腳本寻歧,讓這個(gè)腳本動(dòng)態(tài)讀取某一個(gè)文件夾下所有的原來(lái)設(shè)置的那些腳本,并且在后續(xù)有其他新連接時(shí)我只需要寫一個(gè)新的腳本秩仆,不需要更改其他腳本码泛。
具體實(shí)現(xiàn)如下:
#!/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 設(shè)置如下
運(yùn)行結(jié)果如下