一、设置连接堡垒机函数
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"