LINUX SHELL综合案例:指定字串的截取,字串长度,rpath修改

这个脚本的思路是这样的

  • 新的rpath长度不通超过文件已有的rpath
  • 不同库的关键字,可能是RUNPATH,也可能是RPATH
  • 从文件中读取rpath
  • 截取rpath
  • 计算长度
  • 根据长度,使用不同长度的rpath

具体结果

复制代码
function change_rpath()
{
    RPATH01=.
    RPATH07=\$ORIGIN
    RPATH12=\$ORIGIN:/lib
    RPATH30=\$ORIGIN:/lib/aarch64-linux-gnu
    RPATH35=\$ORIGIN:/lib:/lib/aarch64-linux-gnu

    RPATH_INFO=`chrpath ${1}`
#libHpws.Generic.so: RPATH=:/libs
echo ${RPATH_INFO}
    RPATH=`echo ${RPATH_INFO#*RPATH=}`
    if [[ ${RPATH_INFO} == ${RPATH} ]]; then
        RPATH=`echo ${RPATH_INFO#*RUNPATH=}`
    fi

#:/libs
echo ${RPATH}

    length=${#RPATH}
#6
echo ${length}

    if [[ ${length} -ge 35 ]]; then
        RPATH=${RPATH35}
    elif [[ ${length} -ge 30 ]]; then
        RPATH=${RPATH30}
    elif [[ ${length} -ge 12 ]]; then
        RPATH=${RPATH12}
    elif [[ ${length} -ge  7 ]]; then
        RPATH=${RPATH07}
    else
        RPATH=${RPATH01}
    fi
    result=`chrpath -r ${RPATH} ${1}`

    # chrpath ${1}
}
相关推荐
石像鬼₧魂石1 小时前
内网渗透靶场实操清单(基于 Vulhub+Metasploitable 2)
linux·windows·学习·ubuntu
Danileaf_Guo2 小时前
256台H100服务器算力中心的带外管理网络建设方案
运维·服务器
橘子真甜~2 小时前
C/C++ Linux网络编程15 - 网络层IP协议
linux·网络·c++·网络协议·tcp/ip·计算机网络·网络层
拾贰_C3 小时前
【Linux | Windows | Terminal Command】 Linux---grep | Windows--- findstr
linux·运维·服务器
阿华hhh4 小时前
Linux系统编程(标准io)
linux·开发语言·c++
虹科网络安全4 小时前
艾体宝洞察 | 利用“隐形字符”的钓鱼邮件:传统防御为何失效,AI安全意识培训如何补上最后一道防线
运维·网络·安全
石像鬼₧魂石5 小时前
Kali Linux 网络端口深度扫描
linux·运维·网络
alengan5 小时前
linux上面写python3日志服务器
linux·运维·服务器
yBmZlQzJ5 小时前
免费内网穿透-端口转发配置介绍
运维·经验分享·docker·容器·1024程序员节
JH30735 小时前
docker 新手入门:10分钟搞定基础使用
运维·docker·容器