LinuxSir.Org  
| 网站首页 | 注册账号 | 论坛帮助 |

欢迎来到LinuxSir.Org!
您还未登录,请登录后查看论坛,或者点击论坛上方的注册链接注册新账号。


发表新主题 回复
精华主题  
主题工具
旧 03-12-27, 00:10 第 1 帖
kiron
 
kiron 的头像
 
 
退役版主  
  注册日期: Apr 2003
  帖子: 1,261
  精华: 13
 

标题: 看到home兄的连网脚本,一时技痒,也来贴一个本人正在用的连网的脚本,请兄弟们指教


脚本的使用范围:对于校园网的mac绑定的拨号用户更改mac并拨号上网时使用
特点:脚本做得就像一个实用工具一样,非常方便,我做了两个版本,一个是用于X,一个用于字符界面,在X下像应用程序,需要要Xdialog支持,若没有安装Xdialog,把下面第一个脚本中的Xdialog的X去掉,可以在字符下使用dialog代替。在字符界面下能给出详细的连接情况,连接结果。

脚本测试环境:在redhat9.0和redflag4.0下测试通过

下面这个脚本如果在桌面上建立一个启动器,双击后就*出一个对话框,选择要上网的帐号,就可以连上网了,用起来感觉就像应用程序一样

代码:
#!/bin/bash #chmac--change mac address #this script for change my netcard mac address for enter Internet. MAC1=00:60:7c:01:1f:ab #MAC1和2对应拨号ppp1和ppp0,而MAC3只是改为 MAC2=00:40:4c:51:d2:26 #一个不对应帐号的MAC地址 MAC3=00:40:5d:01:1f:ac #这个函数用来调用脚本出错时显示脚本的使用方法 usage() { echo "Usage:chmac [1|2|3] option 1:You can use accounter ACCOUNT1, 2:You can use accounter ACCOUNT2. 3:Only change your netcard mac address." exit 1 } tmpfile="/tmp/tmp.$$" #建立空的临时文件,在X下的虚拟终端中敲入脚本名不带 #参数时,启动对话框,要求选择一个要拨的帐号,并把选择结果保存在建立的临#时文件里 if [ $# == 0 ];then Xdialog --title "Choose accounter" --menu "Which accounter you want to use?" 0 0 0 1 ACCOUNT1 2 ACCOUNT 3 "Just change mac" 2>$tmpfile ANS=`cat $tmpfile` rm -f $tmpfile #把选择结果显示赋给变量ANS,并删除临时文件 fi if [ $# == 1 ];then #如果参数只有一个,检查是否为1-3内的值,1表用帐号1拨号ANS=$1 #2表用帐号2拨号,3表只是更改网卡地址,不拨号上网 ANS=$1 elif [ $# == 0 ];then : else usage #如果给出多于一个参数,调用出错信息,错误代码为1退出 fi case $ANS in #这个选项可以用来把帐号让给其他机器上网,而不会有MAC冲突 1|2|3) : ;; *) usage ;; esac echo "Please wait..." adsl-stop>/dev/null 2&>1 #若正在上网,先断网,再进行下述动作 /sbin/ifconfig eth0 down case $ANS in 1) /sbin/ifconfig eth0 hw ether $MAC1 #更改为MAC1的地址,再拨号上网 /sbin/ifconfig eth0 up adsl-start /etc/sysconfig/network-scripts/ifcfg-ppp1 ;; 2) /sbin/ifconfig eth0 hw ether $MAC2 #更改为MAC2的地址,再拨号上网 /sbin/ifconfig eth0 up adsl-start ;; 3) /sbin/ifconfig eth0 hw ether $MAC3 /sbin/ifconfig eth0 up ;; *) usage #出错,退出脚本,给出错误代码1 ;; esac /root/bin/networktest #调用另外一个我写的网络情况测试脚本,我把它放在了 #/root/bin/目录下,脚本名为networktest,然后退出代码0表脚本成功执行 exit 0
下面是没有任何图形的脚本,原理是一样的,有小小改动,那就不注释了
代码:
#!/bin/bash #chmac--change mac address #this script for change my netcard mac address for enter Internet. MAC1=00:60:7c:01:1f:ab MAC2=00:40:4c:51:d2:26 MAC3=00:40:5d:01:1f:ac usage() { echo "Usage:chmac [1|2|3] option 1:You can use accounter ACCOUNT1, 2:You can use accounter ACCOUNT2. 3:Only change your netcard mac address." exit 1 } if [ $# == 0 ];then echo -n "Which accounter you want to use[1)ACCOUNT1,2)ACCOUNT,3)Just change mac]:" while : do read ANS case $ANS in 1|2|3) break ;; *) echo -n "Please Enter accounter number[1)ACCOUNT1,2)ACCOUNT2,3)only change mac]:" ;; esac done fi if [ $# == 1 ];then ANS=$1 elif [ $# == 0 ];then : else usage fi echo "Please wait..." adsl-stop>/dev/null 2&>1 /sbin/ifconfig eth0 down case $ANS in 1) /sbin/ifconfig eth0 hw ether $MAC1 /sbin/ifconfig eth0 up adsl-start /etc/sysconfig/network-scripts/ifcfg-ppp1 ;; 2) /sbin/ifconfig eth0 hw ether $MAC2 /sbin/ifconfig eth0 up adsl-start ;; 3) /sbin/ifconfig eth0 hw ether $MAC3 /sbin/ifconfig eth0 up ;; *) usage ;; esac /root/bin/networktest exit 0
上述两个脚本中调用了我写过的一个ADSL网络工作情况报告的脚本,曾经贴出过,现在一并贴出:
代码:
#!/bin/bash #networktest #this script for test my network status adsl-status >/dev/null 2>&1 #ADSL成功连接状态返回0,断网状态则是1 case $? in 0) echo "Your network run well!!" ;; 1) ping -c 6 192.168.X.X >/dev/null 2>&1 #这里192.168.X.X是你的本地IP或你本 #地网络的其他主机IP也可以 if [ $? = 0 ] #本地网成功ping则返回0,错误返回1 then echo "Your adsl is cut!!" else echo "Your local network is cut!!" fi ;; *) echo "Your network configure error!!" ;; esac
请兄弟们多多指教,







__________________
深邃的技术不仅表现在敏捷的思维和高超的本领,还有过人的修养。

此帖于 03-12-27 00:14 被 kiron 编辑.
  kiron 当前离线   回复时引用此帖
旧 03-12-27, 00:48 第 2 帖
KornLee
 
 
 
★☆★☆★☆★  
  注册日期: Nov 2002
  我的住址: LinuxWorld
  帖子: 6,960
  精华: 61
 

精彩~~,等我安了ADSL一定把这些脚本都试试~~
  KornLee 当前离线   回复时引用此帖
旧 05-07-30, 14:14 第 3 帖
cycker
 
cycker 的头像
 
 
注册会员  
  注册日期: Oct 2002
  我的住址: 梅州/深圳
  帖子: 169
  精华: 0
 

#!/bin/sh
#ping两个dns,如果两个都断了,就重新启拨号
#把它加到crontab中,每两分钟执行一次,可保网络畅通 :)
ping 202.96.128.68 -c1
r1=$?
ping 202.96.134.133 -c1
r2=$?

echo -n `date +"%Y-%m-%d %HM"` " check connection: " >> /root/adsl.log

if [ $r1 -eq 1 ] && [ $r2 -eq 1 ] ;then
echo "...[DEAD]" >> /root/adsl.log
echo -n " stop adsl connection..." >> /root/adsl.log
poff
echo "done">> /root/adsl.log

echo -n " start adsl connection..." >> /root/adsl.log
pon dsl-provider &
sleep 10

grep=`ifconfig | grep "P-t-P" | sed -e "s/[-a-zA-Z ]//g" -e "s/:/\//g" | cut -d/ -f2,3`
if [ "x${grep}" != "x" ];then
echo "success,address is $grep" >> /root/adsl.log
else
echo "faild">> /root/adsl.log
fi
iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
echo 1 > /proc/sys/net/ipv4/ip_forward
else
echo "...[OK]" >> /root/adsl.log
fi







__________________

I just want to do everything on linux.
  cycker 当前离线   回复时引用此帖
旧 05-08-02, 21:17 第 4 帖
Zer4tul
 
 
 
注册会员  
  注册日期: Jul 2003
  帖子: 1,069
  精华: 0
 

这个不错,赞一下,呵呵。好帖
  Zer4tul 当前离线   回复时引用此帖
旧 07-06-13, 23:05 第 5 帖
alucard_ad 帅哥
 
alucard_ad 的头像
 
 
注册会员  
  注册日期: Jun 2007
  帖子: 108
  精华: 0
 

佩服你的技术 我一直都在学习写脚本但是就是学不懂。。。
  alucard_ad 当前离线   回复时引用此帖
发表新主题 回复


主题工具

发帖规则
您 [不可以] 发表新主题
您 [不可以] 回复主题
您 [不可以] 上传附件
您 [不可以] 编辑您的帖子

已 [启用] BB 代码
已 [启用] 表情符号
已 [启用] IMG 代码
已 [禁用] HTML 代码
[论坛跳转…]


所有时间均为[北京时间]。现在的时间是 12:36


Powered by vBulletin 版本 3.6.8
版权所有 ©2000 - 2010, Jelsoft Enterprises Ltd.
官方中文技术支持: vBulletin 中文
版权所有 ©2002 - 2009, LinuxSir.Org