linux封装自定义命令-免密公钥

一、设置连接堡垒机函数

vim k8s.sh #1-创建k8s执行脚本

#!/usr/bin/expect -f
set user root
set host 100.7.4.3
set password VY
set timeout -1
set container [lrange $argv 0 0]
spawn ssh -o PreferredAuthentications=password $user@$host

expect "*assword:*"
send "$password\r"

#expect "*login*"
#send "jump $container\r"

interact
expect eof

vim docker.sh #2-创建docker执行脚本

#!/usr/bin/expect -f
set user rd
set host 100.7.2.1
set password q1

spawn ssh $user@$host
expect "*password:*"
send "$password\r"
interact
expect eof

mac下添加环境变量

vim ~/.bash_profile     
alias docker=/Users/m/docker.sh
alias k8s=/Users/m/k8s.sh

alias emulator=/Users/m/Library/Android/sdk/tools/emulator

mac下添加开机启动

vim ~/.zshrc     

source ~/.bash_profile

二、生成免密公钥
检查.ssh文件夹是否存在,生成KEY在命令行中输入,连续按三次回车即可

ls -al ~/.ssh    
mkdir ~/.ssh    
cd ~/.ssh
ssh-keygen -t rsa -C "your_email@example.com"    

查看公钥,将公钥复制过程剪贴板

cat id_rsa.pub   
pbcopy <id_rsa.pub  

三、进入容器脚本
cat gotok.sh #k8s

###############################################################
# Usage:       sh goto.sh 系统key 命名空间
# Author:      yk
###############################################################

key=$1
namespace=$2
para2=$2

if [ "$key" = "" ]; then
	echo "Usage: gotok keywords <namespace> "
	echo "关键字可以为ip,pod name;如果不指定namespace,默认先查default,transaction命名空间,再查找所有命名空间的pod"
	exit
fi

if [[ $key =~ ^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$ ]]; then
	dockerIdName=`kubectl get pods -A -owide |grep -i "$key " |awk '{print $2}' `
	namespace=`kubectl get pods -A -owide |grep -i "$key " |awk '{print $1}' `
	if [ "$dockerIdName" = "" ]; then
        	echo "通过ip没找到pod:"
		echo " kubectl get pods -A -owide |grep -i '$key' "
        	exit
  	fi
fi

if [ "$namespace" = "" ]; then
  namespace=default
fi

if [ ${#para2} = 3 ]; then
    namespace=jiupaipay${para2}
    dockerIdName=`kubectl get pods -n $namespace |grep -i "$key" |awk '{print $1}'`
    if [ "$dockerIdName" = "" ]; then
        echo "在$namespace namespace没找到$key,切换到jiedaibao${para2}查找"
        namespace=jiedaibao${para2}
        dockerIdName=`kubectl get pods -n $namespace |grep -i "$key" |awk '{print $1}'`
        if [ "$dockerIdName" = "" ]; then
                echo "没找到pod"
                exit
        fi
    fi
fi

if [ "$para2" = "" ]; then
    dockerIdName1=`kubectl get pods -n default |grep -i "$key" |awk '{print $1}'`
    dockerIdName2=`kubectl get pods -n transaction |grep -i "$key" |awk '{print $1}'`
    if [[ "$dockerIdName1" != "" ]] && [[ "$dockerIdName2" != "" ]]; then
        echo "在 default 命名空间找到"
        echo $dockerIdName1
        echo "在 transaction 命名空间找到"
        echo $dockerIdName2
        echo "请指定具体关键字或命名空间"
        exit
    fi
fi

if [ "$dockerIdName" = "" ]; then
	dockerIdName=`kubectl get pods -n $namespace |grep -i "$key" |awk '{print $1}'`
fi

if [ "$dockerIdName" = "" ]; then
    if [ "$namespace" = "default" ]; then
        echo "在$namespace namespace没找到$key,切换到transaction查找"
        namespace=transaction
    fi
    dockerIdName=`kubectl -n $namespace get pods |grep -i $key |awk '{print $1}'`
fi

if [[ "$dockerIdName" = "" ]] && [[ "$para2" = "" ]]; then
    searchRes=`kubectl get pods -A |grep -i $key `
    if  [ "$searchRes" = "" ]; then
        echo "在所有命名空间中没找到pod ( kubectl get pods -A |grep -i $key ). "
        exit
    fi

    count=`echo "$searchRes" |wc -l`
    if [ $count = 1 ]; then
	echo "$searchRes"
        echo "在所有命名空间找到一个pod"
        namespace=`echo $searchRes |awk '{print $1}'`
        dockerIdName=`echo $searchRes |awk '{print $2}'`
    else
        echo "在所有命名空间中找到多个pod列表( kubectl get pods -A |grep -i $key ):"
        echo "$searchRes" 
        exit
    fi
fi

if [ "$dockerIdName" = "" ]; then
	echo "kubectl -n $namespace get pods |grep -i $key"
	echo "Find no pod with key:" $key" in namespace:"$namespace
	exit
fi

docker2=`echo $dockerIdName |awk '{print $2}'`
if [ "$docker2" != "" ]; then
	echo "kubectl -n $namespace get pods |grep -i $key"
	echo "找到多个pod:"$dockerIdName
	exit
fi
echo "dockerIdName is "$dockerIdName
echo "namespace is "$namespace
kubectl exec -it $dockerIdName -n $namespace bash

cat godocker

#!/bin/bash

env=$1
sys=$2
echo $env
echo $sys
echo `docker ps -a|grep $env|grep $sys|grep Up|awk '{print $1}'`
echo "docker exec -it `docker ps -a|grep $env|grep $sys|grep Up|awk '{print $1}'` bash"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值