0

所以我打算在这里做的是从http://tuxonice.net/downloads/all/(目前tuxonice-for-linux-3.8.0-2013-02-24.patch.bz2)确定最新的稳定版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)

谢谢。

4

2 回答 2

1

Use the webserver's feature to sort the index page by modification date in reverse order, grab the page using lynx -dump, get the first line matching the filename you are interested in and print the respective column. This gives you the absolute URL to the file, from there you can tweak the command to give you the exact output you want (filename, just the version string, ...).

$ 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

Still not super-robust and will obviously break if the modification dates are not as expected, and you probably also want to tweak the regex a bit to be more specific.

于 2013-04-05T12:39:45.083 回答
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] 这不是真正的单班轮

于 2013-03-29T18:44:50.473 回答