Chinaunix

标题: 怎么做自动换本级IP,然后查看此IP能不能上网? [打印本页]

作者: luojiannx    时间: 2009-01-18 18:43
标题: 怎么做自动换本级IP,然后查看此IP能不能上网?
事先声明,我是想偷懒,并不是我不愿意学shell,实在是没多少时间(有时间,我可能弄别的去了),愿意帮忙的我非常感谢,不愿意帮忙的您笑笑别发火哈

我的思路是用ifconfig 切换IP,然后wget某个固定地址的内容,如果成功下载了正确的内容就判断为能上网

咋做?我不懂shell,有人能帮忙不?

假如脚本的名字叫a.sh
我输入 a.sh 192.168.0
那么我就自动从 192.168.0.2开始一直到192.168.0.254一个一个尝试
能上网的就显示 XXX地址能上网

  1. for($i=2;$i<255;$i++)
  2. {
  3. $address=$1.$i;

  4. ifconfig eth0 $address  //更换地址?激活?不懂
  5. wget XXX.XXX.XXX.XXX/index.html  
  6. 怎么比较?
  7. if(相同)
  8. echo $address能上网
  9. }

复制代码

平时基本上不用shell编程,所以就没打算学了。
上面是伪代码,有人能帮忙么?虽然我是出于某个邪恶的目的:)

[ 本帖最后由 luojiannx 于 2009-1-18 18:58 编辑 ]
作者: luojiannx    时间: 2009-01-18 18:50
对了,还想要有一个功能
我想ping某个机器,然后得到某个机器的mac地址
在更改自己的IP地址为那台机器的IP地址,MAC也相同
然后在判断能不能上网
怎么改自己的MAC地址?

哎,邪恶啊
不过我是被逼的,上不了网啊:(

[ 本帖最后由 luojiannx 于 2009-1-18 18:52 编辑 ]
作者: xiaobaibbb    时间: 2009-01-18 18:54
要全自动啊?那估计比较麻烦的。

#!/bin/sh
for IP in $(seq 2 245);do
ifconfig 设置为192.168.0.$a && ping外网
可以通就跳出,不能就换下一个,菜鸟胡说,期待大侠给思路。。
作者: luojiannx    时间: 2009-01-18 19:00
呵呵,谢谢楼上的捧场哈!
不知道是不是变浮躁了,也可能是工作越来越忙吧,没多少时间学新东西了:(

ping的话可能不太合适,因为ping得外网IP地址通,并不代表能上网。
所以基本上只能用wget(或者别的下载的方式验证)

[ 本帖最后由 luojiannx 于 2009-1-18 19:01 编辑 ]
作者: ynchnluiti    时间: 2009-01-18 19:15
原帖由 luojiannx 于 2009-1-18 18:50 发表

怎么改自己的MAC地址?

Linux更改网卡物理地址(Mac Address)
http://www.linux-wiki.cn/index.p ... 80%28Mac_Address%29
作者: luojiannx    时间: 2009-01-18 19:18
非常感谢,单独的改物理地址我知道,但是怎么做到自动(包括从arp中提取ip地址和对应的物理地址)?
我相关的知识还是少了,对于可能要从零开始的我,可能要找一两天的资料吧。
头痛啊
第一次在论坛上求人(._.!)

[ 本帖最后由 luojiannx 于 2009-1-18 19:21 编辑 ]
作者: 我是DBA    时间: 2009-01-18 19:42
标题: 回复 #6 luojiannx 的帖子
在更改自己的IP地址为那台机器的IP地址,MAC也相同

你这样都IP冲突了。。。。
你说还能上网吗?
作者: luojiannx    时间: 2009-01-18 19:46
回复楼上的同志:事实证明能上网,而且两边都可以,只是容易掉线,不过没关系,我不玩游戏!

因为怕影响领导玩游戏,所以我想找出所有的地址出来,然后找个最好是不在线的地址(这个我可以手动)

[ 本帖最后由 luojiannx 于 2009-1-18 19:48 编辑 ]
作者: luojiannx    时间: 2009-01-18 19:50
还有,我的路由器居然想踢谁下线就踢谁下线,我觉得好神奇的。(把IP地址改成谁的,谁就下线了)
作者: HH106    时间: 2009-01-18 20:00
原帖由 luojiannx 于 2009-1-18 18:50 发表
对了,还想要有一个功能
我想ping某个机器,然后得到某个机器的mac地址
在更改自己的IP地址为那台机器的IP地址,MAC也相同
然后在判断能不能上网
怎么改自己的MAC地址?

哎,邪恶啊
不过我是被逼的,上 ...

同一个局域网,二台电脑IP相同肯定会冲突
更不用说MAC也相同了,绝对会有台电脑上不了网

给你个行得通的建议
扫描局域网内未在线的IP,用shell测试哪些能上网,比方是A地址
然后自动把本地IP改为A地址,如果路由器或交换机没限制,MAC改不改无所谓
作者: luojiannx    时间: 2009-01-18 20:05
以前MAC绑定了,现在没有绑定。
还有两个MAC地址一样,IP地址一样,两边确实都能上网,事实是这样的,至于为什么,那我不清楚。只是玩游戏会掉线,看网页多刷新几次一般都没问题。

现在问题是思路我有了,就是不会实现。囧
哎!罢了!直接抱领导的大腿哭“我要上网,给我能上网的IP"可能更有效.

[ 本帖最后由 luojiannx 于 2009-1-18 20:08 编辑 ]
作者: liaosnet    时间: 2009-01-18 20:12
拒绝讨论这个问题.....根本不把技术当回事...
作者: 我是DBA    时间: 2009-01-18 20:12
标题: 回复 #12 liaosnet 的帖子

作者: HH106    时间: 2009-01-18 20:35
原帖由 liaosnet 于 2009-1-18 20:12 发表
拒绝讨论这个问题.....根本不把技术当回事...


作者: ywlscpl    时间: 2009-01-18 21:01
既然给领导办事,楼主应该是能管理上网的路由器、交换机吧。此问题不应该在SHELL版出现啊
作者: luojiannx    时间: 2009-01-19 09:51
我不是网管,我只是下面做事的。我从事非IT行业。
作者: luojiannx    时间: 2009-01-19 09:59
原帖由 liaosnet 于 2009-1-18 20:12 发表
拒绝讨论这个问题.....根本不把技术当回事...


我是很把技术当回事的。

事实上我在论坛也发了些帖子,基本上都是助人的帖子,包括分享自己的也许是一些很简单的成果。

貌似我这是在论坛第一个求人帮忙的帖。

现在事情多了,没太多时间搞非本专业的技术问题了(本人从事电力调度行业)。

愿不愿帮忙都随意,讽刺我不把技术当回事也悉听尊便。谁是对的谁又是错的呢?有那么重要么?

也许好心人还是有的。

要上网我随时可以,只是有可能会给别人带来不便,所以想做个自动的随时找合适的地址。
作者: luojiannx    时间: 2009-01-19 10:18
也许过个一两个月,我慢慢积累也可以搞定这个问题。
只是我积累的这些技术对我来说真的没太大用处。
所以如果有学弟学妹愿意练练手,或者哪位大侠顺手就做好了,那我当然求之不得。
作者: ywlscpl    时间: 2009-01-19 10:18
标题: 回复 #17 luojiannx 的帖子
楼主的网络环境跟我们单位类似,只有指定的IP才能上网,别的IP虽能与同子网内的IP互通但不能上网。我倒有个建议:下个网络执法官,或类似的局域网工具,可以监视整个局域网内上线IP的,这样你在哪些未上线的IP中试就不会影响到已上线领导玩游戏了

建议楼主再到网络技术版里去问问有好的解决办法没
作者: luojiannx    时间: 2009-01-19 10:23
谢谢楼上的兄弟。

我们这里的网络非常怪,好好多个网段,IP地址不再同一个网段,但是都能互相访问,貌似还有一些人在做代理的(都在动脑筋啊:)

我掌握了几个能上网的IP,但都不太方便。
因为管理比较混乱,貌似现在能上网的IP经常在动。
所以用脚本做可能好些。
作者: luojiannx    时间: 2009-01-19 10:46
不过我尝试下用软件怎样!(其实也用过一些)
作者: ywlscpl    时间: 2009-01-19 11:10
先给一段代码,取192.168.0.X网段下未上线的IP,输出到ip.txt
  1. #!/bin/ksh
  2. count=3
  3. >ip.txt

  4. i=1
  5. while [ $i -le 256 ]
  6. do
  7.     ip="192.168.0.$i"
  8.     printf "checking $ip...  "
  9.     rate=`ping -c $count $ip | grep "packet loss" | awk '{print $7}'`
  10.     rate1=`echo $rate | awk '{print substr($0,1,length($0)-1)}'`
  11.     printf "丢包率%s\n" $rate
  12.     if [ $rate1 == 100 ]
  13.          then
  14.          echo $ip >>ip.txt
  15.     fi
  16.     i=`expr $i + 1`
  17. done
复制代码

  1. 211# ./check
  2. checking 192.168.0.1...  丢包率100%
  3. checking 192.168.0.2...  丢包率0%
  4. checking 192.168.0.3...  丢包率0%
  5. checking 192.168.0.4...  丢包率0%
  6. checking 192.168.0.5...  丢包率0%
  7. checking 192.168.0.6...  丢包率0%
  8. checking 192.168.0.7...  丢包率0%
  9. checking 192.168.0.8...  丢包率0%
复制代码

[ 本帖最后由 ywlscpl 于 2009-1-19 11:17 编辑 ]
作者: luojiannx    时间: 2009-01-19 14:35
感谢楼上的
awk和grep真是个好东西啊
学习ing...我慢慢来!一定要搞定这鸟!




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2