收藏文章 楼主

linux debian12/ubuntu20/21/22安装 libpcap 网络抓包库

版块:C/C++语言开发   类型:普通   作者:小绿叶技术博客   查看:1572   回复:0   获赞:2   时间:2024-05-23 16:23:08


#!/bin/bash
# debian12/ubuntu20/21/22 安装 网络抓包监控开发环境 libpcap 
downDir="/datadisk/eisc/download" ; 
installdir="/datadisk/eisc/server" ; 

debSystemList=( gcc flex byacc make cmake)
ReleaseList=( libpcapRelease )

MysqlSelectVersion=0;
debCheck()
{
    for debname in ${debSystemList[*]}
    do
        debnameInstalled=$( sudo dpkg -s $debname | grep Package | awk -F":" '{print $2}' | sed 's/ //' ) 
 
        if [ "$debnameInstalled" == "$debname" ]
        then 
            echo "[ok] 该包 $debname 已经安装,安装信息查看执行:sudo dpkg -l | grep $debname "
        else
            echo "[runing] 正在安装必备包 $debname..."
            sudo apt reinstall -y $debname
        fi
    done
}

os_release()
{

    if [ $USER = "root" ]
    then 
        sudoc=" "
        # 判断字符串的等号要加空格,否则无法判断
    else
        sudoc="sudo"
        echo "当前为普通用户,需要输入root 密码...  $sudoc"
        $sudoc date   ;
    fi

    xitong=` cat /etc/os-release  | grep -w ID | awk -F"=" '{print $2}' | sed "s/\"//g" `
    case "$xitong" in
        "centos" ) aptc="yum" ; dpkgc="rpm -qa " ; echo "当前是 centos 系统"   ;;
        "ubuntu" ) aptc="apt" ; dpkgc="dpkg -l " ; echo "当前是 ubuntu 系统"   ;;
        "debian" ) aptc="apt" ; dpkgc="dpkg -l " ; echo "当前是 debian 系统"   ;;
    esac

    $sudoc mkdir -p $downDir $installdir    
    $sudoc chmod 777 $downDir $installdir        # chmod 附加权限
}

downURL_select(){
    read -p "选择下载安装包地址: 1 小绿叶技术博客下载     2 官方下载 . 请输入:  "   selectURL
    case $selectURL in
        "1") echo "当前选择小绿叶技术博客下载..." ;     selectFlag=1 ;;
        "2") echo "当前选择官方下载..." ;             selectFlag=2 ;;
        *) echo "输入错误,请重新执行脚本! " ; exit ;;
    esac
}

libpcapRelease()
{
    case $selectFlag in
        "1") downUrl="http://work.eisc.cn/ruanjian/ubuntu/deb/so"      ;;
        "2") downUrl="https://www.tcpdump.org/release/"                 ;;
        *)   echo "未定义下载地址..." ; exit                               ;;
    esac

    if [[ $MysqlSelectVersion = 0 ]]
    then
        read -p "libpcap 提供版本:1. libpcap-1.10.4   请输入1选择版本, 任意字符退出安装 : " MysqlSelectVersion
        case $MysqlSelectVersion in
            "1")  ReleaseMl="libpcap-1.10.4"; ReleaseInstall="so/libpcap/libpcap1104"; ReleaseBin="include/pcap.h";  Down="$downUrl/$ReleaseMl.tar.gz"; echo "$ReleaseMl 下载地址重新定义为:$Down" ;; 
            *)    ReleaseMl=0                                     ; echo "[ok]退出安装."
        esac
    fi
}

libpcap_Compilation_method()
{
    echo "[running] 正在安装 $rundir"
    sudo ./configure --prefix=$rundir               # 不加权限,无法安装到该目录
    sudo make ; sudo make install

    case "$xitong" in 
        "debian")    $sudoc ln -s $rundir/lib/libpcap.so.1 /usr/lib/ ;;   
        "ubuntu")    $sudoc ln -s $rundir/lib/libpcap.so.1 /usr/lib/x86_64-linux-gnu/  ;;
                                                # debian和ubuntu 需要创建软链接, 默认库路径不一致
    esac        

}

download()
{
    sudo mkdir -p $downDir ; sudo chmod 777 -R $downDir 

    cd $downDir ; echo "当前进入目录进行下载:  cd $downDir "

    echo "[runing] 正在检查是否下载安装包: $ReleaseMl.tar.gz"

    # [ ! -d $setdir ] && echo "[running] 目标安装路径不存在" || break ; 

    if [ ! -f $ReleaseMl.tar.gz ]
    then 
        echo "[runing] 当前没有下载,正在下载包:wget $Down "
        wget $Down -O $downDir/$ReleaseMl.tar.gz
    else
        echo  "[ok] 已经下载: $downDir/$ReleaseMl.tar.gz"
    fi

    cutNumber=`ls $setdir/* |sort |uniq -c | awk -F" " '{print $1}'` ; 
    if [[ "$cutNumber" = "" ]]                   # 判断变量的数值大小,需要双小括号+ 引号
    then 
        echo "[running] 正在解压 $downDir/$ReleaseMl.tar.gz 到目录: $setdir" ; 
        tar -xzvf $downDir/$ReleaseMl.tar.gz -C $downDir/
        mv $downDir/$ReleaseMl/*  $downDir/$ReleaseInstall
        rm -rf $downDir/$ReleaseMl 
    else 
        echo "[ok] 已经解压 : $setdir 正在安装 " 
    fi
}
 
RunInstall(){

    for i in ${ReleaseList[*]}
    do
        $i
        MakeFlag=1;
        soFlag=1

        setdir=$downDir/$ReleaseInstall ;
        rundir=$installdir/$ReleaseInstall ;
        $sudoc mkdir -p $setdir $rundir ; $sudoc chmod 777 $setdir $rundir
        echo "setdir=$setdir ;  rundir=$rundir     " 

        echo "当前正在安装  $i"  ; sleep 1;

        case "$ReleaseBin" in 
            "nginx")            [ ! -f $rundir/sbin/$ReleaseBin   ]  && soFlag=1 || soFlag=0  ;;   
            "include/pcap.h")   [ ! -f $rundir/bin/libpcap      ]  && soFlag=1 || soFlag=0  ;;
        esac

        if [[ $ReleaseMl = 0 ]] 
        then
            echo "用户取消安装: $i"
        else

            if [[ ! -f  $rundir/$ReleaseBin ]] && [[ $soFlag = "1" ]]
            then
                download                                    # 安装前检查是否安装 

                cd $setdir 
                echo "[waring] 包没有安装 $rundir/bin/$ReleaseBin 当前进入目录:  $setdir  "  ;  

                case "$ReleaseBin" in 
                    "nginx"   )             nginx_Compilation_method   ; Fpath ; $sudoc cp $rundir/sbin/$ReleaseBin /bin/  ;;
                    "include/pcap.h"   )    libpcap_Compilation_method  ;;
                    *)              echo "未定指定编译,走通用编译方法..." ; $sudoc ./configure --prefix=$setdir ; $sudoc make -j 4 ; $sudoc  make instlal; Fpath ;;
                esac         

                if [[  -f  $rundir/$ReleaseBin ]] 
                then 
                    echo "[ok] Success installd path: $rundir/sbin/$ReleaseBin"
                else 
                    echo "[fail] install Fail : $rundir/sbin/$ReleaseBin "
                fi  

            else
                echo "[ok] 已经安装: $rundir/$ReleaseBin"     

            fi
        fi
    done
}

main()
{
    debCheck; os_release; downURL_select; RunInstall
}
main
# 一键安装:  wget ddoss.cn/file/ubuntu/shell/so/libpcap.sh -O libpcap.sh ; sudo chmod +x libpcap.sh;./libpcap.sh 







本文章最后由 admin2025-01-06 17:35 编辑

提供企业建站服务,免费网防系统,提交信息登录 http://yundun.ddoss.cn 邮箱: proposal@ddoss.cn 
回复列表
默认   热门   正序   倒序

回复:linux debian12/ubuntu20/21/22安装 libpcap 网络抓包库

头像

用户名:

粉丝数:

签名:

资料 关注 好友 消息