吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 798|回复: 10
收起左侧

[求助] Linux shell求助

[复制链接]
sxfxtf 发表于 2022-4-29 13:00
背景介绍:
最近有很多主机端口要探测是否开启,然后最近刚好又学了shell语言.想练习一下.我的代码实现思路是用nmap -p port ip命令
然后查看把执行结果的返回值去用awk搜索端口数据,拿到端口检测的那一行数据,然后拼接字符串  ip加 哪行端口的返回值写入到文本中

Nmap scan report for 192.168.248.254
Host is up (0.00019s latency).
PORT   STATE    SERVICE
22/tcp filtered ssh              <<<<<<<根据端口号匹配获取这一行数值
MAC Address: 00:50:56:E1:AB:A5 (VMware)


shell代码如下:
[Shell] 纯文本查看 复制代码
#!/bin/bash
while read aaa
do
 ip=$(echo $aaa|awk '{print $1}')
 port=$(echo $aaa|awk '{print $2}')
 ip_arr[i++]=$ip
 port_arr[j++]=$port
done < ret.txt


for((i=0;i<=${#ip_arr[@]};i++))
do
{
 port=${port_arr[$i]}
 echo "ip 是" ${ip_arr[$i]} "port是" ${port_arr[$i]}
 nmap -p ${port_arr[$i]}  ${ip_arr[$i]}|awk -v port=${port_arr[$i]} '/port/'
} &
done


查看执行过程就是倒数第三行这个-v port数字没有传入到/port/里,想请教下 这个port因为是个数字怎么可以传入进去呢?
或者以上代码要怎么改造呢
image.png

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

xiaomm250 发表于 2022-4-29 13:46
学perl吧,学啥shell?
 楼主| sxfxtf 发表于 2022-4-29 14:51
xiaomm250 发表于 2022-4-29 13:46
学perl吧,学啥shell?

底层才是最稳的.哈哈 主要平时还可以拿来熟悉命令
流月汐志 发表于 2022-4-29 15:15
[Shell] 纯文本查看 复制代码
#!/bin/bash

OLD_IFS= $IFS
IFS=$'\n'

for raw in $(cat ret.txt)
do
    ip=$(echo ${raw} | awk -F ' ' '{print $1}')
    port=$(echo ${raw} | awk -F ' ' '{print $2}')
    echo "Ip: ${ip} ---- Port: ${port}"
done
mmaaiiooo 发表于 2022-4-29 17:08
你可以参考下这个呢。
[root@minion ~]# more ret.txt
192.168.102.132 22
192.168.102.132 222


[root@minion ~]# ./scan.sh
IP: 192.168.102.132 ,port: 22 ,端口检测结果为: open
IP: 192.168.102.132 ,port: 222 ,端口检测结果为: closed

[Bash shell] 纯文本查看 复制代码
#!/bin/bash

while read line
do
 str=$line
 array_ret=(${str// / }) #以空格作为分隔符,将str分割成IP和port
 ip=${array_ret[0]}
 port=${array_ret[1]}
 res=$(nmap -p $port $ip) #使用nmap探测端口,将结果返回给res
 cont_first=${res#*SERVICE}  #取res里面SERVICE字符串的右边内容
 cont_second=${cont_first%Nmap*} #取cont_first里面Nmap字符串的左边内容
 array_cont=(${cont_second// / }) #以空格作为分隔符,取出端口状态
 echo "IP:" $ip ",port:" $port ",端口检测结果为:" ${array_cont[1]}
done < ret.txt


 楼主| sxfxtf 发表于 2022-4-29 20:22
mmaaiiooo 发表于 2022-4-29 17:08
你可以参考下这个呢。
[root@minion ~]# more ret.txt
192.168.102.132 22

感谢大佬,我研究一下
 楼主| sxfxtf 发表于 2022-4-29 20:23
流月汐志 发表于 2022-4-29 15:15
[mw_shl_code=shell,true]#!/bin/bash

OLD_IFS= $IFS

我从文本分隔ip 和 port是第一步,然后还要吧他们传入nmap中去的.
而且你这步我已经完成了
头像被屏蔽
xiadongming 发表于 2022-4-29 22:50
提示: 作者被禁止或删除 内容自动屏蔽
 楼主| sxfxtf 发表于 2022-4-29 23:01
xiadongming 发表于 2022-4-29 22:50
再多定义一个变量,,

就是-v  变量死活传不进去.哎
流月汐志 发表于 2022-4-30 19:45
sxfxtf 发表于 2022-4-29 20:23
我从文本分隔ip 和 port是第一步,然后还要吧他们传入nmap中去的.
而且你这步我已经完成了

你试试我这个就知道了,能不能传进去
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 13:19

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表