|
发表于 2005-4-5 23:31:55
|
显示全部楼层
我自己琢磨了一个脚本出来,不一定好用,呵呵。
目前已经发现的问题有:
1 不适合英文locale,wget返回的信息是中文才行。
2 下载的文件有可能不是mp3文件。因为url列表文件中的url有可能在服务器上面已经改变,比如对应了一个html文件,那么也会下载下来。
3 log文件中的内容不一定准确。会发现log文件里面的记录有重复,可能是循环的时候初始值没有搞好的缘故。
下面是脚本的内容,mp3 url列表文件在附件,下载后改个扩展名。
- #!/bin/sh
- #
- # wd
- # 2005.4.5
- #
- # 设置下载目录
- P=./down
- # 设置下载列表
- list=./mp3.list
- if [ -d $P ]
- then
- echo -n "目录 $P 已经存在,是否删除其中内容?(Y/n)"
- read testdir
- testdir=${testdir:=Y}
- if [ $testdir = "N" -o $testdir = "n" ]
- then
- echo "选择了不删除,将只检测更新."
- else
- rm -f $P/*
- rm -rf ./down.log
- echo "已删除."
- fi
- else
- echo "目录 $P 不存在,将新建一个目录存放下载的文件."
- mkdir $P
- fi
- i=0
- if [ ! -f $list ]
- then
- echo "下载列表文件 $list 不存在,请重新设置."
- exit 0
- fi
- for url in $(cat "$list")
- do
- i=$[$i + 1]
- for oldfile in $(ls -t -1 "$P")
- do
- break
- done
- echo "正在下载 $url"
- status=$(wget $url -T 5 -P $P -N 2>&1)
- str=$status
- key="已保存" #下载并且保存
- bstr=${str%%${key}*}
- for newfile in $(ls -t -1 "$P")
- do
- break
- done
- if test ${#bstr} -ne ${#str}
- then
- echo "正常下载 $newfile !"
- echo $i:$newfile >> ./down.log
- else
- echo "没有正常下载!"
- for newfile in $(ls -t -1 "$P")
- do
- break
- done
- if test $newfile != $oldfile
- then
- echo "发现非正常下载的文件 $newfile ,准备删除..."
- rm -f $P/$newfile
- echo "已经删除 $newfile"
- else
- echo "没有发现非正常下载的文件!"
- fi
- fi
- done
复制代码 |
|