linux服务器批量扫描文件中IP信息

2019-06-21  本文已影响0人  以梦为马ll不负韶华

适用于从服务器的应用目录扫描含有ip信息文件,目录可以通过参数指定,也可以不指定,若不指定则自行根据容器类型扫描对应目录下的文件,示例如下:

示例1.PNG 示例2.PNG 示例3.PNG 示例4.PNG

代码如下:

#!/bin/sh

#定义数组
declare -a filename
declare -a contentinfo

#获取本机ip
host=`hostname -i`

#获取进程信息,界定容器类型
ins_tomcat=`ps -ef|grep -v 'grep'|grep "\-Dcatalina.base"|wc -l`
ins_was=`ps -ef|grep -v 'grep'|grep "nodeagent"|wc -l`
ins_weblogic=`ps -ef|grep -v 'grep'|grep "Dweblogic.Name"|wc -l`
ins_nginx=`ps -ef|grep "nginx"|grep -v 'grep'|grep "master process"|wc -l`
IFS='
'

#确定应用目录
if [ $# -gt 0 ];then
thepath=$1
else
if [ $ins_tomcat -gt 0 ];then
thepath=`ps -ef|grep "\-Dcatalina.base"|grep -v 'grep'|awk -F "-Dcatalina.base=" '{print $2}'|grep -v 'print'|awk '{print $1}'`
elif [ $ins_was -gt 0 ];then
thepath=`ps -ef|grep "nodeagent"|grep -v 'grep'|awk -F 'Dwas.install.root=' '{print $2}'|awk '{print $1}'`
elif [ $ins_weblogic -gt 0 ];then
thepath=`cat /wls/serveradmin/conf/env/*.env|grep "APP_HOME"|head -1|awk -F '=' '{print $2}'`
elif [ $ins_nginx -gt 0 ];then
thepid=`ps -ef|grep "nginx"|grep "master process"|grep -v 'grep'|awk '{print $2}'`
thepath=`lsof|grep $thepid|grep 'txt'|awk '{print $9}'|awk -F '/sbin' '{print $1}'`
else
echo '[ERROR] 获取路径失败,请检查!'
fi
fi

#获取待扫描目标文件列表
files=`find $thepath -type f ! -name "*.log" -a ! -name "*.jar" -a ! -name "*.bak" -a ! -name "*.bak*" -a ! -name "*.gz" -a ! -name "*.log*" -a ! -name "*.out" -a ! -name "*.class" -print 2>/dev/null`

#扫描ip地址
for file in $files
do
elfcheck=`readelf -h $file 2>/dev/null`
filetypecheck=`file -b $file|awk '{print $1}'`
if [ -z "$elfcheck" -o "$filetypecheck" != "ELF" ];then
  findinfo=`grep -n -o '[1-9][0-9]\{0,2\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}' $file 2>/dev/null|uniq`

  if [ -n "${findinfo}" ];then
  filename=(${filename[*]} $file)
  contentinfo=$contentinfo"文件"$file"\n第"$findinfo"\n"
  ((number++))
  fi
else
echo "[INFO] "$file"是编译后的ELF文件,跳过扫描."
fi
done
wait

#结果展示
filecount=${#filename[@]}

echo "*********************************************************************"
if [ $filecount -gt 0 ];then
echo "[INFO] 主机$host共有如下$filecount个文件存在符合条件的ip:"
for ii in ${filename[@]}
do
echo "  ${ii}"
done
echo "[INFO] ip分布情况如下:"
echo "-----------------------------------------------------"
for theinfo in $contentinfo;do
echo -e "第"${theinfo//:/行存在ip:}
done
echo "-----------------------------------------------------"
else
echo "[INFO] 主机$host没有文件存在符合条件的ip"
fi
echo "*********************************************************************"
上一篇下一篇

猜你喜欢

热点阅读