nmap使用方法-跳板机命令

nmap:https://blog.csdn.net/tk86935367/article/details/8352015



#/bin/bash

#变量声明
nmap=`which nmap`
ssh_keygen=`which ssh-keygen`
ssh_copy_id=`which ssh-copy-id`
ifconfig=`which ifconfig`
ssh=`which ssh`
user=muyang
pass=muyang
declare -a vm
declare -a know=0
declare -i i=0
lan_Ip=192.168.127.0
mask=24
trap "" HUP INT QUIT TSTP
#本地IP获取
local_ip=`$ifconfig ens33 | grep netmask | awk '{print $2}'`
#echo -e "\033[40;32m================信号捕捉开始====================\033[0m"
#trap "" HUT,INT,QUIT,TSTP

#扫描可以访问的主机
echo -e "\033[40;34m=======================开始搜索可以远程访问的主机=============\033[0m"
for own  in $(cat /root/.ssh/known_hosts  |cut -d " " -f 1 |cut -d "." -f 4)
        do
           echo "192.168.127.${own}......."
           know[$own]=1
           i=$(( $i+1 ))
        done
echo 
echo -e "\033[40;34m=======================搜索完毕=================================\033[0m"


#flag=1
#while [ $flag -eq 1 ]
#是否生成秘钥并发送给客户端
#do
  if [ $i -eq 0 ]
        then
        echo "检测到没有可访问的主机;是否要生成公钥并发送至远程客户端?(y/n)"
        read option
        case $option in
           "y"|"yes")
           $ssh_keygen
           ;;
           "n"|"no")
           echo -e "\033[40;33m若您无法解决当前问题,请联系管理员!!\033[0m"
           #exit
           ;;
           "yang")
           exit
           ;;
           *)
           echo -e "\033[40;31m请根据提示信息输入您的选择!\033[0m"
         ;;
         esac
  else
  fi
#done
#扫描同网段内存活主机
if [ $? -eq 0 ];then
     #reset integer i
     k=0
     i=0
     echo -e "\033[40;33m==================即将扫描同网段内存活主机====================\033[0m"
     for ip_add in $(${nmap} -sP ${lan_Ip}/${mask} | grep report | grep -v 127.1$ | grep -v 127.2$ | grep -v 127.254$ | cut -d " " -f 5)
        do
           if [ $ip_add != $local_ip ]
                then
                vm[$k]=${ip_add}
                k=$(( $k+1 ))
           fi
           tial=`echo "$ip_add" | cut -d "." -f 4`
           #echo $tial
           #echo ${know[${tial}]}
             if [ -z  ${know[${tial}]} ]
                then
                know[${tial}]=0
             fi
             if [ ${know[${tial}]} -eq 0  -a  "${ip_add}" != "${local_ip}" ]
               then
               echo -e "\033[40;33m ==================即将将公钥拷贝到主机${ip_add}上============="
               $ssh_copy_id ${user}@$ip_add
               #vm[$i]=$ip_add
               i=$(( $i+1 ))
               echo -e "\033[40;32m ==================公钥拷贝成功============================\033[0m"
             fi
        done
     #echo $i
     else
        echo -e "\033[40;31m 公钥生成错误!!!\033[0m"
fi

#加下来是核心部分
#打印菜单栏
memset(){
        j=0
        for prin_ip in ${vm[@]}
            do
                if [ $prin_ip != ${local_ip} ];then
                echo -e "\033[40;34m ${j}----------${prin_ip}\033[0m"
                j=$(( $j+1 ))
                fi
            done
}

#echo ${vm[@]}
tput=`which tput`
#trap "" HUP INT QUIT TSTP
while true
do
        $tput clear
        memset
        #echo $m
        read -t 20 -p "请输入你的选择: " inf
        if [ $inf == "yang" ]
          then
          exit
          else
                test -z ${vm[$inf]} && echo "您的输入有误,请重新输入" || $ssh $user@${vm[$inf]}
        fi
done

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章