2013-03-29 27 views
0

所以我打算在这里做的是从http://tuxonice.net/downloads/all/(目前tuxonice-for-linux-3.8.0-2013-02-24.patch.bz2)确定TuxOnIce的最新稳定版本。如何确定最新的稳定TuxOnIce版本尽可能紧凑

什么复杂的事情是,有没有“当前”的链接,所以我们得遵循版本,这是一样的东西(这是不存在的):

tuxonice-for-linux-3.8.0-2013-4-2.patch.bz2 
tuxonice-for-linux-3.8-4-2013-4-16.patch.bz2 
tuxonice-for-linux-3.8-11-2013-5-23.patch.bz2 

的问题是他们会是在这个顺序:

tuxonice-for-linux-3.8-11-2013-5-23.patch.bz2 
tuxonice-for-linux-3.8-4-2013-4-16.patch.bz2 
tuxonice-for-linux-3.8.0-2013-4-2.patch.bz2 

我目前的实施(这是垃圾)是这样的。我想过使用时间,但无法弄清楚如何做,要么(/tmp/tuxonice是索引文件):

_major=3.8 # Auto-generated 
_TOI=$(grep ${_major}-1[0-9] /tmp/tuxonice | cut -d '"' -f2 | tail -1) 
[ ! $_TOI ] && _TOI=$(grep ${_major}- /tmp/tuxonice | cut -d '"' -f2 | tail -1) 
[ ! $_TOI ] && _TOI=$(grep ${_major}.0-2 /tmp/tuxonice | cut -d '"' -f2 | tail -1) 

感谢。

回答

1

使用网络服务器的功能,排序按照相反的顺序修改日期索引页面,抢使用lynx -dump页面,抢线匹配你感兴趣的文件名并打印相应的列。这给你的文件的绝对URL,从那里你可以调整命令给你你想要的确切输出(文件名,只是版本字符串,...)。

$ lynx -dump 'http://tuxonice.net/downloads/all/?C=M&O=D'|awk '/^[[:space:]]*[[:digit:]]+\..+\/tuxonice-for-linux/ { print $2; exit }' 
http://tuxonice.net/downloads/all/tuxonice-for-linux-3.8.0-2013-02-24.patch.bz2 

还没超级强大,显然会打破,如果修改日期预期都没有,你可能还需要调整正则表达式有点更具体。

+0

不知道你可以按日期排序索引。所以只要不存在任何其他版本的相同内核,简单的'grep $ {_ major}/tmp/tuxonice | cut -d'“'-f2 | head -1'就足够了(之前是'curl -s”http://tuxonice.net/downloads/all/?C=M&O=D“-o/tmp/tuxonice') – Det

+1

确实!如果您好奇,请查看[Apache的mod_autoindex文档](http://httpd.apache.org/docs/2.2/mod/mod_autoindex.html#query),了解Apache(Apache)的可能排序和格式参数)index。很明显,只有当它们坚持支持通过URL参数进行排序的web服务器时,它才会起作用(不是很多) –

+0

当然,'grep -m1'甚至比'| head -1'好。现在。 – Det

0

这是不是一个真正的答案,但我认为这 “一班轮”[1]是很酷:

HTML=$(wget -qO- http://tuxonice.net/downloads/all/ | grep tuxonice); TIMESTAMP=$(echo "$HTML" | sed 's/.*\([0-9]\{2\}-[A-Za-z]\{3\}-[0-9]\{4\} [0-9]\{2\}:[0-9]\{2\}\).*/\1/' | while read line; do echo $(date --date "$line" +%s) $line; done | sort | tail -n 1 | cut -d' ' -f2-3); LINK=$(echo "$HTML" | grep "$TIMESTAMP" | sed 's/.*href=\"\(.*\)\".*/\1/'); echo "http://tuxonice.net/downloads/all/${LINK}" 

打印:

http://tuxonice.net/downloads/all/tuxonice-for-linux-3.8.0-2013-02-24.patch.bz2 

这种做法是真的只是一个笑话。显然,有更好的方法来做到这一点,也许使用支持XML解析的脚本语言。

至少,这可能会让您对如何使用文件的日期/时间值选择“最新”有所了解。但是我谨慎使用它(因为上传日期可能与版本号不一致),并建议您的版本号的想法可能是一个更好的主意,如果你能以某种方式处理所有各种命名和版本编号方案,它们看起来像他们已经使用了。

[1]这不是一个真实的衬垫