美文网首页
ssh远程连接服务器 脚本文件 【软连接】

ssh远程连接服务器 脚本文件 【软连接】

作者: SuperGu | 来源:发表于2018-02-24 09:37 被阅读66次

    一个使用expect免输入密码自动登录ssh的shell脚本,方便好用,适用Mac、Linux

    来自:https://github.com/jiangxianli/SSHAutoLogin

    1、ssh_login.sh

    #!/bin/bash

    # Function : 使用except无需输入密码自动登录ssh

    # Author  : Jiangxianli

    # Date    : 2016/01/14

    # Github  : https://github.com/jiangxianli/SSHAutoLogin

    #默认服务器配置项

    #    "服务器名称 端口号 IP地址 登录用户名 登录密码/秘钥文件Key 秘钥文件地址"

    CONFIGS=(

        # "服务器名称 22 220.181.57.217 root passphrase key ~/private_key.pem"

        # "新浪服务器 22 66.102.251.33 root sina.com"

        "Linux(CentOS7)VM 22 172.16.7.140 root root"

    )

    #读取自定义服务器配置文件(server_config)列表,合并服务器配置列表

    if [ -f server_config ]; then

        while read line

        do

            CONFIGS+=("$line")

        done < server_config

    fi

    #服务器配置数

    CONFIG_LENGTH=${#CONFIGS[*]}  #配置站点个数

    if [[ $CONFIG_LENGTH -le 0 ]] ;

    then

        echo "未检测到服务器配置项!"

        echo "请在脚本CONFIGS变量中配置或单独创建一个server_config文件并配置"

        exit ;

    fi

    #服务器配置菜单

    function ConfigList(){

        for ((i=0;i<${CONFIG_LENGTH};i++));

        do

            CONFIG=(${CONFIGS[$i]}) #将一维sites字符串赋值到数组

            serverNum=$(($i+1))

            echo "---(${serverNum})--${CONFIG[0]}(${CONFIG[2]})---"

        done

    }

    #登录菜单

    function LoginMenu(){

        if [  ! -n $1 ]; then

            AutoLogin $1

        else

            echo "-------请输入登录的服务器序号---------"

            ConfigList

            echo "请输入您选择登录的服务器序号: "

        fi

    }

    #选择登录的服务器

    function ChooseServer(){

        read serverNum

        if [[ $serverNum -gt $CONFIG_LENGTH ]] ;

        then

            echo "输入的序号不正确,请重新输入:"

            ChooseServer ;

            return ;

        fi

        if [[ $serverNum -lt 1 ]] ;

        then

            echo "输入的序号不正确,请重新输入:"

            ChooseServer ;

            return ;

        fi

        AutoLogin $serverNum;

    }

    #自动登录

    function AutoLogin(){

        num=$(($1-1))

        CONFIG=(${CONFIGS[$num]})

        echo "正在登录【${CONFIG[0]}】"

        command="

            expect {

                    \"*assword\" {set timeout 6000; send \"${CONFIG[4]}\n\"; exp_continue ; sleep 3; }

                    \"*passphrase\" {set timeout 6000; send \"${CONFIG[4]}\r\n\"; exp_continue ; sleep 3; }

                    \"yes/no\" {send \"yes\n\"; exp_continue;}

                    \"Last*\" {  send_user \"\n成功登录【${CONFIG[0]}】\n\";}

            }

          interact

        ";

      pem=${CONFIG[5]}

      if [ -n "$pem" ]

      then

        expect -c "

            spawn ssh -p ${CONFIG[1]} -i ${CONFIG[5]} ${CONFIG[3]}@${CONFIG[2]}

            ${command}

        "

      else

        expect -c "

            spawn ssh -p ${CONFIG[1]} ${CONFIG[3]}@${CONFIG[2]}

            ${command}

        "

      fi

        echo "您已退出【${CONFIG[0]}】"

    }

    # 程序入口

    if [ 1 == $# ]; then

        if [ 'list' == $1 ]; then

            ConfigList

        else

            AutoLogin $1

        fi

    else

        LoginMenu

        ChooseServer

    fi

    2、给ssh_login.sh文件执行的权限

    chmod u+x ssh_login.sh

    3、配置服务器脚本文件 【软连接】

    $  ln -s  ~/Desktop/ssh_login.sh  /usr/local/bin/ssh_login

    注意: ln -s 之后的路径都要是完整的路径地址

    4、命令使用

    $  ssh_login list            // 查看所有服务器配置

    $  ssh_login  1            // 登录第一个配置的服务器

    服务器登录

    $  ssh_login

    选择序列号:1、2、3 .......

    5、删除服务器脚本文件 【软连接】

    $  rm /usr/local/bin/ssh_login




    ln参数释义

    1.命令格式:

     ln [参数][源文件或目录][目标文件或目录]

    2.命令参数:

    必要参数:

    -b 删除,覆盖以前建立的链接

    -d 允许超级用户制作目录的硬链接

    -f 强制执行

    -i 交互模式,文件存在则提示用户是否覆盖

    -n 把符号链接视为一般目录

    -s 软链接(符号链接)

    -v 显示详细的处理过程

    选择参数:

    -S “-S<字尾备份字符串> ”或 “--suffix=<字尾备份字符串>”

    -V “-V<备份方式>”或“--version-control=<备份方式>”

    --help 显示帮助信息

    --version 显示版本信息

    相关文章

      网友评论

          本文标题:ssh远程连接服务器 脚本文件 【软连接】

          本文链接:https://www.haomeiwen.com/subject/qfazzxtx.html