帮我看下我这个小脚本程序那里有问题????

sh/bash/dash/ksh/zsh等Shell脚本
回复
头像
zglcx123
帖子: 110
注册时间: 2007-08-20 16:34
来自: Earth

帮我看下我这个小脚本程序那里有问题????

#1

帖子 zglcx123 » 2009-07-31 19:06

此脚本的用途于要求:
1. 后台运行 ping localhost > datfile.dat 命令监视网络的连通情况,将结果保存到 datfile.dat 文件中;
2. 监视 datfile.dat 文件,当其新生成的数据大于 100KB 时,将新生成的数据按"datfile_开始时间_结束时间.dat"形式保存在当前目录(保存的数据要求是整行,不要断行保存。保存过的行,不要再保存);
3. 当所有新截取出来的.dat文件大小之和大于1MB字节时,将这些.dat文件打包压缩成.tar.gz格式,存放到当前目录下的archive子目录 (命名形式:datfile_第一个dat文件的开始时间_最后一个dat文件的结束时间.tar.gz),之后删除所有被打包的.dat文件(即打包后删除原文件);

----------------------------------------------------------------------

代码: 全选

#!/bin/sh

user=$(ifconfig | grep "inet\ " | sed '2d' | cut -c23-35 )
allLength=0
num=0
st=0
while true
do
	touch datfile.dat
	startTime=$(date | cut -c31-38 | tr : _ )
	if [ ${num} -eq 0 ]
	then
		st=${startTime}
	fi

	while [ $(du -k "datfile.dat") -le 100 ]
	do
		ping ${user} >> datfile.dat
#这个地方>  与>>算是个问题,我现在改过来,以防影响后面的人,用>>也是不行,情况一样
#我自己在终端上用 ping 192.*.*.* >> abc.dat 这个文件是有数据的,但是写到脚本里就不行了
#ping 这终端是一直运行着产生数据的,用ctrl+c结束运行,是不是这个特性导致的问题?
		sleep 3
	done
	num=$(($num + 1)) 
	endTime=$(date | cut -c31-38  | tr : _ )
	rename=datfile_${startTime}_${endTime}.dat
	mv datfile.dat $rename
	#mv datfile.dat "datfile_${startTime}_${endTime}.dat"
	
	allLength=$(($allLength +$(du -k $rename | sed 's/	.*$//')))

	if [ $allLength -ge 1024 ]
	then 
		tar -zcf datfile_${st}_${endTime}.tar.gz datfile_*_*.dat
		rm -f datfile_*_*.dat
		allLength=0
		num=0
		break;
	fi

done &
-------------------------------------------------------------
现在出现的问题是 ping部分,,脚本运行后会在当前目录下产生数据文件(以时间保存.dat),但是文件是空的,没内容,这是为什么???
大家看看前面的要求,看我程序那里有问题???
谢谢大家!!!
上次由 zglcx123 在 2009-07-31 20:06,总共编辑 2 次。
Dropbox!点我注册,你的起点高了500M,我也能多得到500M,共赢!
--------
HP V3808TU (2008.03.08---2012.10.08)
ASUS N56VZ (2012.10.08---未来)
wangzc2009
帖子: 319
注册时间: 2009-01-30 18:18
来自: 湖北十堰

Re: 帮我看下我这个小脚本程序那里有问题????

#2

帖子 wangzc2009 » 2009-07-31 19:15

>>是追加。你每次都>怎么行!
愿意同大家一起学习分享linux知识
wangzc2009
帖子: 319
注册时间: 2009-01-30 18:18
来自: 湖北十堰

Re: 帮我看下我这个小脚本程序那里有问题????

#3

帖子 wangzc2009 » 2009-07-31 19:16

由于每次都是重写。所以文件不可能大于100kB.
愿意同大家一起学习分享linux知识
头像
zglcx123
帖子: 110
注册时间: 2007-08-20 16:34
来自: Earth

Re: 帮我看下我这个小脚本程序那里有问题????

#4

帖子 zglcx123 » 2009-07-31 19:38

请大家仔细看看,用>>有也试过,还是不行呀
Dropbox!点我注册,你的起点高了500M,我也能多得到500M,共赢!
--------
HP V3808TU (2008.03.08---2012.10.08)
ASUS N56VZ (2012.10.08---未来)
wangzc2009
帖子: 319
注册时间: 2009-01-30 18:18
来自: 湖北十堰

Re: 帮我看下我这个小脚本程序那里有问题????

#5

帖子 wangzc2009 » 2009-07-31 19:43

我运行了你的脚本。开始touch建立了个文件.然后就在ping > 那步里卡主了,没有继续运行!

你可以编个简单得验证一下思路,你犯得错误其实就是下面脚本错误。(也就是我上面说得)
#!/bin/sh
touch 1.txt

while true
do
ping *.*.*.* > 1.txt
sleep 3
done
愿意同大家一起学习分享linux知识
soiamso
帖子: 418
注册时间: 2008-09-06 2:00

Re: 帮我看下我这个小脚本程序那里有问题????

#6

帖子 soiamso » 2009-07-31 19:50

ping 你 ping 3次就可以了,为何无限ping?

执行完了才通过管道发到文件
头像
zglcx123
帖子: 110
注册时间: 2007-08-20 16:34
来自: Earth

Re: 帮我看下我这个小脚本程序那里有问题????

#7

帖子 zglcx123 » 2009-07-31 20:10

wangzc2009 写了:我运行了你的脚本。开始touch建立了个文件.然后就在ping > 那步里卡主了,没有继续运行!

你可以编个简单得验证一下思路,你犯得错误其实就是下面脚本错误。(也就是我上面说得)
#!/bin/sh
touch 1.txt

while true
do
ping *.*.*.* > 1.txt
sleep 3
done

谢谢这位大哥多次关注我的问题,,我用了你的方法,可以生成数据,但我的程序里的就是不行,而且还产生很多一时间命名的文件
刚刚我看了下下面一楼的兄弟的回答,觉得有可能是他说的那种问题,ping 完了后才会传到文件里,,
如何控制ping,, 我只想让那个文件的大小达到100k就可以重命名保存了。。
Dropbox!点我注册,你的起点高了500M,我也能多得到500M,共赢!
--------
HP V3808TU (2008.03.08---2012.10.08)
ASUS N56VZ (2012.10.08---未来)
头像
zglcx123
帖子: 110
注册时间: 2007-08-20 16:34
来自: Earth

Re: 帮我看下我这个小脚本程序那里有问题????

#8

帖子 zglcx123 » 2009-07-31 20:11

soiamso 写了:ping 你 ping 3次就可以了,为何无限ping?

执行完了才通过管道发到文件
请问:如何控制ping ,,让数据达到100k就可以停止了
Dropbox!点我注册,你的起点高了500M,我也能多得到500M,共赢!
--------
HP V3808TU (2008.03.08---2012.10.08)
ASUS N56VZ (2012.10.08---未来)
wangzc2009
帖子: 319
注册时间: 2009-01-30 18:18
来自: 湖北十堰

Re: 帮我看下我这个小脚本程序那里有问题????

#9

帖子 wangzc2009 » 2009-07-31 20:19

man ping 里有怎么只ping 一定数量得包。-c

不睡3秒了。每次只ping 一定数量得包就结束。然后在ping.直到大小够判断标准就行了。
愿意同大家一起学习分享linux知识
头像
zglcx123
帖子: 110
注册时间: 2007-08-20 16:34
来自: Earth

Re: 帮我看下我这个小脚本程序那里有问题????

#10

帖子 zglcx123 » 2009-07-31 20:39

问题估计不在ping这里,,有点怀疑呀,把ping独立出来编写一个小脚本,就一点问题都没有。
顺便问下:ping -c n只是控制多少行, 怎么控制多少数据量?


各位兄弟们!问题没解决呀,谁能静下心来好好帮我看下!!!谢谢了

前面几位大哥,也谢谢你们


Help!!!
Help!!!
Help!!!
Dropbox!点我注册,你的起点高了500M,我也能多得到500M,共赢!
--------
HP V3808TU (2008.03.08---2012.10.08)
ASUS N56VZ (2012.10.08---未来)
头像
x007007007
帖子: 408
注册时间: 2007-11-07 17:53
系统: Mac
来自: shanghai
联系:

Re: 帮我看下我这个小脚本程序那里有问题????

#11

帖子 x007007007 » 2009-08-05 12:34

ping 10000 次,然后用管道传给cat ,读出100k,在重定向
人生来只做的两件事:
1.犯错
2.改错
只犯错不改错的是魔鬼,只改错不犯错的是上帝
总之,都不是人!!!!!!!!!!!!!
我的地盘
头像
zglcx123
帖子: 110
注册时间: 2007-08-20 16:34
来自: Earth

Re: 帮我看下我这个小脚本程序那里有问题????

#12

帖子 zglcx123 » 2009-08-05 12:45

这个问题怎么没人能解决呀!!!
Dropbox!点我注册,你的起点高了500M,我也能多得到500M,共赢!
--------
HP V3808TU (2008.03.08---2012.10.08)
ASUS N56VZ (2012.10.08---未来)
tubunu
帖子: 34
注册时间: 2009-07-13 11:49

Re: 帮我看下我这个小脚本程序那里有问题????

#13

帖子 tubunu » 2009-08-05 17:48

man ping

Flags

-c Count
Specifies the number of echo requests, as indicated by the Count variable, to be sent (and received).
-s PacketSize
Specifies the number of data bytes to be sent. The default is 56, which translates into 64 ICMP data bytes when combined with the 8 bytes of ICMP header data.
tubunu
帖子: 34
注册时间: 2009-07-13 11:49

Re: 帮我看下我这个小脚本程序那里有问题????

#14

帖子 tubunu » 2009-08-05 17:57

zglcx123 写了:问题估计不在ping这里,,有点怀疑呀,把ping独立出来编写一个小脚本,就一点问题都没有。
顺便问下:ping -c n只是控制多少行, 怎么控制多少数据量?


各位兄弟们!问题没解决呀,谁能静下心来好好帮我看下!!!谢谢了

前面几位大哥,也谢谢你们


Help!!!
Help!!!
Help!!!

LZ你自己能不能先静下心来看看别人的回答。。。 :em20
头像
zglcx123
帖子: 110
注册时间: 2007-08-20 16:34
来自: Earth

Re: 帮我看下我这个小脚本程序那里有问题????

#15

帖子 zglcx123 » 2009-08-05 18:03

ping 部分一直有问题。
这个帖子关闭了吧
Dropbox!点我注册,你的起点高了500M,我也能多得到500M,共赢!
--------
HP V3808TU (2008.03.08---2012.10.08)
ASUS N56VZ (2012.10.08---未来)
回复