我想编写一个 bash 脚本,用于通知我 trac wiki 时间线上的更改。不幸的是,我无法“登录”(下次登录需要 cookie)。
wget http://someserver.com/trac/xxx/login \
--save-cookies=cookies --keep-session-cookies
wget http://someserver.com/trac/xxx/login \
--load-cookies=cookies \
--save-cookies=cookies.new --keep-session-cookies\
--post-data=user=viroos&password=myPassword
我得到:
Error 400: Bad Request
我也尝试了 --user --password 选项:
wget --no-check-certificate --user viroos --password myPassword\
https://someserver.com/trac/xxx/timeline?ticket=on&changeset=on&milestone=on&wiki=on&blog=on&max=50&daysback=90&format=rss
但这只会下载登录页面。
我究竟做错了什么?
答案1
我认为您已经非常接近解决方案了。这应该取决于您的配置:
wget --no-check-certificate --user viroos --password myPassword \
--save-cookies=cookies --keep-session-cookies \
https://someserver.com/trac/xxx/login
wget --no-check-certificate --load-cookies=cookies \
https://someserver.com/trac/xxx/timeline?ticket=on&changeset=on&milestone=on&wiki=on&blog=on&max=50&daysback=90&format=rss
第一次调用对 /login url 进行授权并保存身份验证 cookie。第二次调用应该会得到您想要的结果。
如果您在 ..../trac/login url 上启用了基本授权,这将会起作用。
答案2
对于 http URL,wget 中的 --user/--password 标志涵盖 HTTP 基本身份验证。Trac 有自己的登录机制,因此这些标志在这种情况下不起作用。
有一种方法可以做你想做的事(虽然我不确定 wget 是否有能力做到这一点),但在花时间研究这个方向之前,你有没有考虑过使用TRAC 时间线 RSS 提要?
RSS 源将允许您使用您最喜欢的 RSS 阅读器订阅时间线更改并收到通知。它还将为您提供一个标准的 XML 文件以便于解析,这样您就可以对数据进行任何您想做的事情。