Shell案例: jumpserver跳板机

ssh连接框架:

[root@test day5]# cat jumpserver.sh 
#!/bin/bash
WEB01=172.16.1.7
WEB02=172.16.1.8
NFS=172.16.1.31
BACKUP=172.16.1.41
DB01=172.16.1.51
LB01=172.16.1.5
LB06=172.16.1.6

echo -e "\t\t\t\t\t\t 1.WEB01"
echo -e "\t\t\t\t\t\t 2.WEB02"
echo -e "\t\t\t\t\t\t 3.NFS"
echo -e "\t\t\t\t\t\t 4.BACKUP"
echo -e "\t\t\t\t\t\t 5.DB01"
read -p "请输入要登录主机的编号: " num
case $num in
	   1|web01)
	          ssh $WEB01
	   ;;
	   2)
	          ssh $WEB02
	   ;;
	   3)
		  ssh $NFS
	   ;;
	   *)
		echo "Usage: $0 [1|2|3|4]"
esac

运维代码:

[root@test day5]# cat jumpserver.sh 
#!/bin/bash
WEB01=172.16.1.7
WEB02=172.16.1.8
NFS=172.16.1.31
BACKUP=172.16.1.41
DB01=172.16.1.51
LB01=172.16.1.5
LB06=172.16.1.6

kf(){
        echo -e "\t\t\t\t\t\t 1.WEB01=172.16.1.7"
}
yw(){
echo -e "\t\t\t\t\t\t 1.WEB01=172.16.1.7"
echo -e "\t\t\t\t\t\t 2.WEB02=172.16.1.8"
echo -e "\t\t\t\t\t\t 3.NFS=172.16.1.31"
echo -e "\t\t\t\t\t\t 4.BACKUP=172.16.1.41"
echo -e "\t\t\t\t\t\t 5.DB01=172.16.1.51"
echo -e "\t\t\t\t\t\t h.显示菜单"
}





echo -e "\t\t\t\t\t\t 1.运维"
echo -e "\t\t\t\t\t\t 2.开发"

read -p "请选择你的身份: " num

if [ $num -eq 1 ];then
	yw
	while true
	do
		read -p "请输入要登录主机的编号[h显示菜单]: " num
		case $num in
			   1|web01)
				  ssh $WEB01
			   ;;
			   2)
				  ssh $WEB02
			   ;;
			   3)
				  ssh $NFS
			   ;;
			   h)
				  clear
				  yw
			   ;;
			   *)
				echo "Usage: $0 [1|2|3|4]"
		esac
	done
fi

开发代码:

[root@test day5]# cat jumpserver.sh 
#!/bin/bash
WEB01=172.16.1.7
WEB02=172.16.1.8
NFS=172.16.1.31
BACKUP=172.16.1.41
DB01=172.16.1.51
LB01=172.16.1.5
LB06=172.16.1.6

kf(){
        echo -e "\t\t\t\t\t\t 1.WEB01=172.16.1.7"
}
yw(){
echo -e "\t\t\t\t\t\t 1.WEB01=172.16.1.7"
echo -e "\t\t\t\t\t\t 2.WEB02=172.16.1.8"
echo -e "\t\t\t\t\t\t 3.NFS=172.16.1.31"
echo -e "\t\t\t\t\t\t 4.BACKUP=172.16.1.41"
echo -e "\t\t\t\t\t\t 5.DB01=172.16.1.51"
echo -e "\t\t\t\t\t\t h.显示菜单"
}





echo -e "\t\t\t\t\t\t 1.运维"
echo -e "\t\t\t\t\t\t 2.开发"

read -p "请选择你的身份: " num

if [ $num -eq 1 ];then
	yw
	while true
	do
		read -p "请输入要登录主机的编号[h显示菜单]: " num
		case $num in
			   1|web01)
				  ssh $WEB01
			   ;;
			   2)
				  ssh $WEB02
			   ;;
			   3)
				  ssh $NFS
			   ;;
			   h)
				  clear
				  yw
			   ;;
			   *)
				echo "Usage: $0 [1|2|3|4]"
		esac
	done
elif [ $num -eq 2 ];then
	kf
	while true
	do
		read -p "请输入要登录主机的编号[h显示菜单]: " num
		case $num in
			   1|web01)
				  ssh $WEB01
			   ;;
			   2)
				  ssh $WEB02
			   ;;
			   3)
				  ssh $NFS
			   ;;
			   h)
				  clear
				  kf
			   ;;
			   *)
				echo "Usage: $0 [1|2|3|4]"
		esac
	done

fi

完善脚本:

[root@test day5]# cat jumpserver.sh 
#!/bin/bash
WEB01=172.16.1.7
WEB02=172.16.1.8
NFS=172.16.1.31
BACKUP=172.16.1.41
DB01=172.16.1.51
LB01=172.16.1.5
LB06=172.16.1.6

kf(){
        echo -e "\t\t\t\t\t\t 1.WEB01=172.16.1.7"
}
yw(){
echo -e "\t\t\t\t\t\t 1.WEB01=172.16.1.7"
echo -e "\t\t\t\t\t\t 2.WEB02=172.16.1.8"
echo -e "\t\t\t\t\t\t 3.NFS=172.16.1.31"
echo -e "\t\t\t\t\t\t 4.BACKUP=172.16.1.41"
echo -e "\t\t\t\t\t\t 5.DB01=172.16.1.51"
echo -e "\t\t\t\t\t\t h.显示菜单"
echo -e "\t\t\t\t\t\t 6|q.返回主菜单"
}




menu(){
echo -e "\t\t\t\t\t\t 1.运维"
echo -e "\t\t\t\t\t\t 2.开发"
echo -e "\t\t\t\t\t\t 3|g.娱乐一下"
}


trap "echo 别乱按小心爆炸" INT HUP TSTP
while true
do
menu

read -p "请选择你的身份: " num
if [ $num -eq 1 ];then
     while true
     do
     read -s -p "输入运维的密码: " pass
     if [ $pass = oldboy123 ];then
	echo "欢迎运维回家"
	yw
	while true
	do
		read -p "请输入要登录主机的编号[h显示菜单]: " num
		case $num in
			   1|web01)
				  ssh $WEB01
			   ;;
			   2)
				  ssh $WEB02
			   ;;
			   3)
				  ssh $NFS
			   ;;
			   h)
				  clear
				  yw
			   ;;
			   6|q)
				  break 2
			   ;;
			 woshiyunwei)
			         exit
			   ;;
			   *)
			         continue
		esac
	done
	else 
	      let i++
	      if [ $i -eq 3 ];then
	         echo "想想在输入"
		 sleep 2
		 continue
	      fi
	      echo "密码输入错误重新输入"
	      continue
	fi
     done
elif [ $num -eq 2 ];then
	kf
	while true
	do
		read -p "请输入要登录主机的编号[h显示菜单]: " num
		case $num in
			   1|web01)
				  ssh $WEB01
			   ;;
			   2)
				  ssh $WEB02
			   ;;
			   3)
				  ssh $NFS
			   ;;
			   h)
				  clear
				  kf
			   ;;
			 woshiyunwei)
			         exit
			   ;;
			   *)
				echo "Usage: $0 [1|2|3|4]"
		esac
	done

 elif [ $num -eq 3 ];then
      sh game.sh
fi
done

expect免交互发送秘钥

[root@test day5]# cat test.ex 
#!/usr/bin/expect
set timeout 10 
set user root
set ip	 172.16.1.31
set password 1
spawn ssh-copy-id  $user@$ip 
expect { 
   "yes/no" { send "yes\n";exp_continue } 
   "password" { send "$password\n" } 
}
interact
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值