主机列表IP
cat host_list.log
100
102
102
 
  
按主机列表查询现有服务的iptables都配置了哪些规则并保存到port_all.tmp中,然后去重排序保存到port_all.log
cat find_iptables_port.sh
#!/bin/bash
#for i in $(cat host_list.log)
> port_all.tmp
> port_all.log
for i in $(cat host_list.log)
do
    ssh  192.168.100.${i} -C iptables -nL|sed -nr '/dpt:/s#^.*dpt:([0-9]+).*$#\1#p'>> port_all.tmp
done
cat port_all.tmp |sort|uniq|sort -n > port_all.log 
 
 
将去重排序后的port_all.log增加端口解释,格式为 "协议 端口"
cat port_all.log
SMTP 25
DNS 53
HTTP 80
RPC 111
NTP 123
HTTPS 443
RSYNC 873
NFS 999
UDP 1199
NFS 2049
MYSQL 3306
kibana 5601
 
 
根据主机列表和端口定义列表批量查询服务器上开启的端口并保存到日志里,命名规则为IP_port.log
cat find_host_port.sh
#!/bin/bash
unset service_name
unset service_port
service_list_path='/root/scripts/find_port/port_all.log'
service_list_line=$(cat ${service_list_path}|wc -l)
service_list_num=$((${service_list_line} -1 ))
service_name=($(awk '{print $1}' ${service_list_path}))
service_port=($(awk '{print $2}' ${service_list_path}))
main(){
for i in $(cat host_list.log)
do
  > ${i}_port.log
  echo "start ${i}"
  for num in $(seq 0 ${service_list_num})
  do
      service_pro=$(ssh  192.168.100.${i} -C lsof -i:${service_port[${num}]}|wc -l)
      if [ ${service_pro} -gt 0 ]
      then
          echo -e "${service_port[${num}]} \t ${service_name[${num}]}" 
          echo -e "${service_port[${num}]} \t ${service_name[${num}]}" >> ${i}_port.log
      fi
  done
done
}
main