ubuntu通过shell实现上网(已解决)

sh/bash/dash/ksh/zsh等Shell脚本
fashionly
帖子: 28
注册时间: 2010-11-13 14:40

ubuntu通过shell实现上网(已解决)

#1

帖子 fashionly » 2010-11-13 15:18

各位大侠好!
刚接触ubuntu不久,有很多的不懂,就连上网也成问题(校园网客户端:zdclient_bin_1.2_i686.tar.gz 图形界面中固定ip后,在终端在进入主文件中runzdclient 但是每隔5分钟就会掉一次线,之后还得自己重新输入指令……很麻烦的那种)但是聪明的小白的我,明白可以用shell脚本实现这一个功能(ping网关,如果ping不通则自动重新输入指令)。哈哈……这真是一个很NB的想法(。……。!汗)

问题得到解决了但一直没有回来小结(后来才知道这是一种对他人也是对自己不负责任的表现,通过大家讨论得到的解决方法是应该共同分享的)。 :em06

下面这是一个通过以ping ip来判断是否断网,然后实现自动重联:

代码: 全选

#!/bin/bash

while [ true ]
do
ping -c 5 -W 3 192.168.216.254 &>/dev/null  #ping一个ip地址
if [ $? -ne 0 ]; then  #判断ping是否执行成功,若不成功(即是断网了)执行then
runzdclient -l          #这是我的客户端进程结束指令(这个换成你自己客户端进程结束指令)
sleep 0.5                #一个系统反应时间
runzdclient             #客户端执行指令(这个换成你自己的客户端联接指令)
fi
sleep 10   #这个时间跟据情况去设定
done
下面这一个则是通过判断自己网络几分钟断一次网来设定:

代码: 全选

#!/bin/bash
time=260  #我的是5分钟断一次网,就设置了一个260
client=$HOME/runzdclient

while [ true ]
do
runzdclient -l
sleep 0.5
runzdclient
sleep 260
done
下面这是另外一种ping ip来重新联网的:

代码: 全选

#!/bin/bash

while [ true ]
do
ping -c 5 195.168.216.254 &>/dev/null&&echo 在线||runzdclient -l
sleep 0.5
runzdclient
done
这里总结出了三种方法:通过shell重联客户端实现上网
虽然有了三种方法面且也能上网了,但是这样效果还是不怎么理想(网络不稳定,这个一般上网是没有问题了,在这样的情况在也还能完成语言包安装……基本上还可以。)毕竟这是客户端完整实现上网功能的好啊!
希望知道的大侠能帮我!(我那要用dhcp,一直都不知道怎么来弄啊……) :em06
这个runzdclient我是按照教程上安装在我的主文件夹中的,在写shell中没的指定路径但是却能执行成功(不知道是什么原因)。
上次由 fashionly 在 2010-12-03 22:13,总共编辑 3 次。
头像
daf3707
论坛版主
帖子: 12731
注册时间: 2007-06-13 15:57
来自: 在他乡

Re: 一个shell让我很崩溃: ping

#2

帖子 daf3707 » 2010-11-13 16:08

代码: 全选

ping -c5 192.168.0.121 &>/dev/null&&echo 在线||echo 断线
:em03
only_one
帖子: 186
注册时间: 2010-05-25 16:49

Re: 一个shell让我很崩溃: ping

#3

帖子 only_one » 2010-11-13 16:31

这方法行不通
校园网的客户端是进行外网认证
无论通没通过认证 都能ping通网关的 改成ping DNS吧

如果固定每5分钟掉线 不如认证过期内重运行一下客户端
only_one
帖子: 186
注册时间: 2010-05-25 16:49

Re: 一个shell让我很崩溃: ping

#4

帖子 only_one » 2010-11-13 17:59

#!/bin/bash

time=260 #认证间隔(秒)
client=$HOME/mystarV0.1/mystar #客户端路径

while [ true ]
do
killall -9 `basename $client` &>/dev/null
$client &
sleep $time
done
fashionly
帖子: 28
注册时间: 2010-11-13 14:40

Re: 一个shell让我很崩溃: ping

#5

帖子 fashionly » 2010-11-13 18:10

only_one 大侠

我的客户端用的是:zdclient

#!/bin/bash

time=260
client=$home/runzdclient

while [true]
do
killall -9 'basename $ client' &>/dev/null
sclient &
sleep $time
done

但是条件 (断开还是连通)不知道彼插入进去啊,还有就是ping dns 呢……该怎么加入啊? :em03
only_one
帖子: 186
注册时间: 2010-05-25 16:49

Re: 一个shell让我很崩溃: ping

#6

帖子 only_one » 2010-11-13 19:14

only_one 写了:#!/bin/bash

time=260 #认证间隔(秒)
client=$HOME/mystarV0.1/mystar #客户端路径

while [ true ]
do
killall -9 `basename $client` &>/dev/null
$client &
sleep $time
done
直接把上面的客户端路径改成你的,$HOME是家目录 是大写!
不用ping了
不行缩短一下认证间隔
fashionly
帖子: 28
注册时间: 2010-11-13 14:40

Re: 一个shell让我很崩溃: ping

#7

帖子 fashionly » 2010-11-13 19:22

sleep $time

这个time 可以随便写一个吗?
fashionly
帖子: 28
注册时间: 2010-11-13 14:40

Re: 一个shell让我很崩溃: ping

#8

帖子 fashionly » 2010-11-13 19:25

./ubuntu.sh:line 6:[true]:找不到 命令

结果是这样啊…… :em20
only_one
帖子: 186
注册时间: 2010-05-25 16:49

Re: 一个shell让我很崩溃: ping

#9

帖子 only_one » 2010-11-13 19:56

[ true ] 有空格的
照我的复制啊
fashionly
帖子: 28
注册时间: 2010-11-13 14:40

Re: 一个shell让我很崩溃: ping

#10

帖子 fashionly » 2010-11-13 20:21

啊……哦
但是,现在它显示sleep缺少操作数
fashionly
帖子: 28
注册时间: 2010-11-13 14:40

Re: 一个shell让我很崩溃: ping

#11

帖子 fashionly » 2010-11-13 20:27

我把 sleep $time 换成 sleep time 之后 以显示:‘line 9 :sclient:找不到命令’(这个一个循环出现这名话)
only_one
帖子: 186
注册时间: 2010-05-25 16:49

Re: 一个shell让我很崩溃: ping

#12

帖子 only_one » 2010-11-13 20:36

:em20
不要乱改 照抄我的
把客户端路径 改了就行了!
fashionly
帖子: 28
注册时间: 2010-11-13 14:40

Re: 一个shell让我很崩溃: ping

#13

帖子 fashionly » 2010-11-13 20:50

only_one 大侠 我知道错了!
这个最终的运行结界出来了(而且也成功实现自动拔号了,但是它不能输入断网后的下线指令,而是一直的拔号)

#!/bin/bash

time=260
client=$HOME/runzdclient

while [ true ]
do
killall -9 'basename $ client' &>/dev/null
$client &
sleep 10
done
fashionly
帖子: 28
注册时间: 2010-11-13 14:40

Re: 一个shell让我很崩溃: ping

#14

帖子 fashionly » 2010-11-13 23:33

有一定的shell基础,再回过来看 向only_one所提的问题,确实是很‘弱智’的。在这里谢了……
但是执行这个shell脚本,我还是碰到一些问题:
#!/bin/bash

time=260
client=$HOME/runzdclient

while [ true ]
do
killall -9 'basename $client' &>/dev/null
$client &
done
如果把“&>/dev/null”去掉,在终端显示不能杀死客户端的进程。
还有的就是“-9” 到底是数字9,还是字母g
剩一个就是“ ‘basename $client’ ”是什么意思 啊?
头像
eexpress
帖子: 58428
注册时间: 2005-08-14 21:55
来自: 长沙

Re: 一个shell让我很崩溃: ping

#15

帖子 eexpress » 2010-11-13 23:38

killall -9 'basename $client' &>/dev/null
这样的写法就麻烦,basename就是取路径的最后文件名。

不如 pkill -9 runzd
● 鸣学
回复