博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
扫描整个网段的所有,查看主机是否在线
阅读量:6790 次
发布时间:2019-06-26

本文共 5601 字,大约阅读时间需要 18 分钟。

ma_be.sh

#!/bin/bash#nmap -sP 192.168.30.0/24 |grep 192|awk '{print $5}' >ip_list  #扫描一个网段,将Ip地址或者主机名保存到ip_list文件中user="watson"password="watson@123"root_passwd="*********"pwd_dir=`pwd`                            #获取当前执行路径network=$1                            #获取脚本执行参数#root_passwd="**********"################################################################################### #              root用户执行nmap命令,扫描主机#                   使用nmap -sP ###################################################################################function Root_nmap(){    if [[ $network == '' ]]        then                echo "请输入一个网络参数!"&& exit 1        fi    /usr/bin/expect <<-EOFset time 60spawn   su - rootexpect {"*yes/no" { send "yes\r"; exp_continue }"*Password:" { send "$root_passwd\r" }}expect "*#"  { send "cd  $pwd_dir && bash get_ip.sh $network\r" }expect "*#"  { send "exit\r" }interactexpect eofEOF}##################################################################################   对ip_list里面的文件进行处理,查看那些IP可以使用#################################################################################function Believe_hosts(){        rm -rf $hosts &&          touch $hosts        rm -rf $hosts_windows &&    touch $hosts_windows        rm -rf $hosts_password_errors &&touch $hosts_password_errors    rm -rf $hosts_others&&    touch $hosts_others    ip_num=`cat $ip_list|wc -l`    #echo $ip_num&&exit    for i in `seq 1 $ip_num`    do            #读取ip_list里面的ip地址            ip=`cat $ip_list |sed -n $i'p'|awk '{print $1}'`            #sshpass -p $password scp believe.sh $user@$ip:/tmp/ >/dev/null            sshpass -p $password scp saomiao $user@$ip:/tmp/ >/dev/null        re=$?                    #上一条命令的执行结果            if [ $re -eq 0 ]            #执行结果为0,表示可以建立信任关系            then#            sshpass -p $password ssh $user@$ip -o StrictHostKeyChecking=no "bash /tmp/believe.sh"            echo $ip >> $hosts            elif [ $re -eq 1 ]            #执行结果为1,表示可能为windows机器            then                     echo $ip >>$hosts_windows            elif [ $re -eq 5 ]            #执行结果为5,表示watson密码错误        then                    echo $ip >>$hosts_password_errors        else            echo "IP:$ip-----------------错误:$re" >>$hosts_others            fi    done}function Believe_make(){    ip_list=dev_host    belog=belog    ip_num=`cat $ip_list|wc -l`    rm -rf $belog &&touch $belog    for i in `seq 1 $ip_num`    do        #读取iplist里面的ip地址和密码        ip=`cat $ip_list |sed -n $i'p'|awk '{print $1}'`        sshpass -p $password scp believe.sh $user@$ip:/tmp/ >/dev/null    #    sshpass -p $password scp saomiao $user@$ip:/tmp/ >/dev/null    #    echo $ip---------------------执行结果-------------$?        if [ $? -eq 0 ]        then             sshpass -p $password ssh $user@$ip -o StrictHostKeyChecking=no "bash /tmp/believe.sh"            echo $ip 成功  >> belog    #        echo $ip >>hosts        else            echo $ip 失败    >>belog        fi    done}function main(){        if [ ! -d $network ]        then                mkdir $network        fi    ip_all="$network/ip_all_$network"                           #文件里面保存网段中所有可以ping的IP地址        ip_list="$network/ip_list_$network"                          #文件里面保存nmap扫描的原始数据        hosts="$network/hosts_$network"                        #保存Linux主机地址    hosts_windows="$network/hosts_windows_$network"                #Windows主机    hosts_password_errors="$network/hosts_password_errors_$network"        #保存密码错误主机    hosts_others="$network/hosts_others_$network"                #其他类型主机    Root_nmap                                #切换root用户,并且扫描主机    Believe_hosts                                #得到Linux主机地址,生成host+网段文件#    Believe_make}main $1;

get_ip.sh

#!/bin/bashnetwork=$1###########################################################################        使用nmap命令扫描获取在线IP地址#        必须root执行##########################################################################function Get_IP(){    rm -rf $ip_all &&         touch $ip_all    rm -rf $ip_list &&        touch $ip_list    nmap -sP 192.168.$network.0/24 |grep 192 > $ip_all    #获取所有可以ping的地址    #对获取得到的信息加工,得到单独的IP地址    ip_num=`cat $ip_all|wc -l`    for i in `seq 1 $ip_num`    do        lie_ip=`cat $ip_all |sed -n $i'p'`               lie_nf=`echo $lie_ip |awk '{print NF}'`        if [ $lie_nf -eq 5 ]        then            ip=`echo $lie_ip|awk '{print $5}'`            echo $ip >> $ip_list        elif [ $lie_nf -eq 6 ]        then            ip=`echo $lie_ip|awk -F"(" '{print $2}'|awk -F")" '{print $1}'`            echo $ip >> $ip_list                else            echo "$lie_ip------------------Error!!!!!!!!"        fi    done    chown watson:watson $network -R}function main(){        ip_all="$network/ip_all_$network"                                                       #文件里面保存网段中所有可以ping的IP地址        ip_list="$network/ip_list_$network"                                             #文件里面保存nmap扫描的原始数据    Get_IP }main $1;

 

脚本运行:

在ma_be.sh输入整个网段的统一root密码

chmod +x ma_be.sh

./ma_be.sh 19  #扫描19网段

 

 

 

-----------------------------------------------------------------------------分割线-----------------------------------------------------------------------------

获取用户脚本

#!/bin/bashif [ $# -eq 2 ]then    hosts=$1    hostname=$2    tmpfile=user1    filename=user$hostname    rm -rf $tmpfile && touch $tmpfile    rm -rf $filename && touch $filename    ansible -i $hosts $hostname -m shell -a "cat /etc/passwd |grep bash " >$tmpfile    cat $tmpfile |awk -F: '{print $1}' |awk '{print $1}' >$filename    rm -rf $tmpfileelse    echo "脚本必须传入参数两个,第一个为主机文件,第二个为主机群的名称,例如:'bash getsuer.sh hosts dev'"    exit 1fi

 

转载地址:http://nnogo.baihongyu.com/

你可能感兴趣的文章
Portal的简单使用
查看>>
springmvc4环境简单搭建和定时任务
查看>>
分布式锁的实现方式——ACID数据库、缓存或者是zk
查看>>
排序文件中的N个不重复的正整数
查看>>
接触C# 反射
查看>>
机器人在水下的精彩生活:探索更神秘的海洋世界
查看>>
和我一起学CSLA.NET----创建业务对象3
查看>>
AngularJS中Route例子
查看>>
SQL Server里ORDER BY的歧义性
查看>>
Hadoop之父Doug Cutting:Lucene到Hadoop的开源之路
查看>>
Autodesk云计算-- HomeStyler在线家居设计平台
查看>>
linux rtc 接口【转】
查看>>
3. 文件系统管理
查看>>
Visual Prolog 的 Web 专家系统 (6)
查看>>
一个IT学生的personal statement
查看>>
request_mem_region 与 ioremap【转】
查看>>
项目绩效考核体系指标建设图表
查看>>
ASP.NET MVC 2.0 中文正式版发布
查看>>
GNU make manual 翻译(七十八)
查看>>
【原创】开源Math.NET基础数学类库使用(17)C#计算矩阵条件数
查看>>