linux脚本 ssh 连接,SSH连接管理 (我的第一个shell脚本)

由于 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 目录如下

6d7ffb5a4adb

ssh_config 目录

iterm 设置如下

6d7ffb5a4adb

iterm 设置

运行结果如下

6d7ffb5a4adb

运行结果

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值