mac环境下zsh自定义命令连接(ssh)服务器

本文教你如何通过zsh自定义命令,利用expect脚本实现SSH连接服务器的自动化,不再手动输入账号密码,提升效率。只需几步操作,轻松配置alias并添加到.zshrc中。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

习惯使用iterm工具,但是每次连接服务器都要手动敲ssh以及账号密码很麻烦,可以使用zsh自定义命令快速连接服务器!

zsh的安装网上教程很多,这里不多介绍,自己百度装吧

自定义命令流程

1、编写服务器配置文件

我是在根目录下面,建立一个.data文件,隐藏文件(强迫症不想看见多余的文件,也可以不隐藏)

vi .data

ali|10.100.xx.xx|root|yourpwd
ali2|10.100.xx.xx|root|youpwd
.
.
.
.
.

分别是

name | ip | account | password

2、编写ssh命令

文件名随便,我是用的.co.sh

vi .co.sh

#!/usr/bin/bash

function auto_login_ssh(){
    expect -c "
    set timeout 3;
    spawn ssh -i ~/develop/inno.pem -o StrictHostKeyChecking=no $2;
    expect {
        *assword:* {
            send $1\r;
        }
    }
    interact
    "
    return $?
}

if [ $# -ne 1 ]; then
    echo "Invaild"
    exit 1
fi

CONFIG_FILE={your file path}
NAME=$1
simplename=""
ipaddr=""
username=""
password=""

found=0

while read line ; do
    simplename=$(echo $line | cut -d'|' -f1)
    ipaddr=$(echo $line | cut -d'|' -f2)
    username=$(echo $line | cut -d'|' -f3)
    password=$(echo $line | cut -d'|' -f4)

    if [ "$NAME" == "$simplename" ] ; then
        found=1
        break
    fi
done < $CONFIG_FILE

if [ "$found" == 1 ] ; then
    auto_login_ssh $password $username"@"$ipaddr
else
    #echo "Undefined Config"
    if [[ $NAME =~ ^([0-9]{1,2}|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.([0-9]{1,2}|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.([0-9]{1,2}|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.([0-9]{1,2}|1[0-9][0-9]|2[0-4][0-9]|25[0-5])$ ]]
    then
        auto_login_ssh password root"@"$NAME
    else
        echo "Undefined Config"
    fi
fi

修改文件中  CONFIG_FILE  为 .data文件的绝对路径

保存文件即可

3、修改 .zshrc

vi .zshrc

添加    alias co='sh {path}/.co.sh'       {path} 是你.co.sh文件的绝对路径

保存退出后命令行输入
source .zshrc      生效配置

4、然后就好啦,随便玩儿吧

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值