看了个kali教程视频,里面涉及一点自写脚本的内容
下面是ip地址扫描,判断主机是否在线的shell
#!/bin/bash
echo 'inputip:' #提示输入要扫描的ip地址
read inputip #获取终端输入给变量inputip
tip=$inputip #将获取到的inputip 给变量 tip 这里是多余的赋值 只是不想修改下面的代码而已
echo -n '1: ' #输出行号
#使用ping方法查看 注意等好后面的是 反单引号 结尾处也是 反单引号
res=`ping $tip -c 1 | grep ttl | awk '{print $4}' | awk -F: '{print $1}'`
#判断
if [ $res > 0 ]
then
echo "$tip.$n on"
else
echo "$tip.$n off"
echo ''
fi
如果希望测试多个IP,可以将输入,改为读取文件,在文件中写入要测试的ip(每行1条)
然后用for循环测试
#!/bin/bash
#提前创建ip.txt 将要测试的ip写入
All_tip=`cat ip.txt`
for tip in $All_tip
do
res=`ping $tip -c 1 | grep ttl | awk '{print $4}' | awk -F: '{print $1}'`
#判断
if [ $res > 0 ]
then
echo "$tip.$n on"
else
echo "$tip.$n off"
echo ''
fi
done
一种特殊的if
#if [ $? -eq 0 ] ### $? 是获取上一行的执行结果或者返回值 -eq 0 代表成功 1代表失败
扩展一:扫描整个C段 192.168.1.*
#!/bin/bash
echo '请输入ip C段地址,如 192.168.1'
echo 'inputip:'
read inputip
tip=$inputip
for n in `seq 254`
do
echo -n $n ': '
res=`ping $tip.$n -c 1 | grep ttl | awk '{print $4}' | awk '{print $1}'`
#ping $tip.$n -c 1 | grep ttl | awk '{print $4}' | awk -F: '{print $1}'
if [ $res > 0 ]
#if [ $? -eq 0 ]
then
echo "$tip.$n on"
else
echo "$tip.$n off"
fi
# echo ''
done
扩展二:扫描ip端口
#!/bin/bash
A=`cat ip1`
for B in $A
do
n=`echo $B | wc -L`
if [ $n -gt 6 ]
then
ip=$B
echo "scan $ip"
echo "Nmap scan report for $ip" >>r1
else
port=$B
nmap -p$port -sV $ip | grep -v Starting | grep -v report | grep -v Host | grep -v PORT | grep -v Service | grep -v 'done' >>r1
#echo `nmap -p$port -sV $ip`
fi
done
ip1内容
192.168.16.24
22
80
443
3306192.168.1.26
22
80
443
3306
扫描结果