2015-04-02 87 views
-1

复杂的使用,我试图让使用基于某种模式卷曲2个文件,但似乎并没有工作:
卷曲与模式

文件:
SystemOut_15.04.01_21.12.36.log
SystemOut_15.04.01_15.54.05.log

curl -f -k -u "login:password" https://myserver/cgi-bin/logviewer/index.cgi?getlogfile=SystemOut_15.04.01_21.12.36.log'&'server=qwerty123.com'&'numlines=100000000'&'appenv=MBL%20-%20PROD'&'directory=/app/WAS/was85/profiles/node/logs/mbl-server1 

我知道有-A关键,但它不工作,因为我的文件是内部链接。
如何使用模式提取这2个文件?

+0

文件获取是'getLogFile'查询参数?你可以发送两次该参数吗?如果不是,我认为你只是打电话两次。 – 2015-04-02 19:55:03

+0

不幸的是我无法发送两次参数。这只是2个日志的例子,事实上我有很多这样的日志,所以我需要一些通用的解决方案来完成它们。 – Skyline 2015-04-02 19:56:45

+1

如果您的URL一次只能取一个日志文件名,那么您无法一次将它们全部取出。如果没有其他查询可以运行以便以某种方式获取它们,那么您可以循环查找名称并自己多次运行'curl'。 – 2015-04-02 19:58:06

回答

0

自己做了。一个curl获取网页上的日志列表。另一个下载这些文件。

代码如下:

for file in $(curl -f -k -u "user:pwd" https://selfservice.pwj.com/cgi-bin/logviewer/index.cgi?listdirectory=/app/smx_client_mob/data/log'&'appenv=MBL%20-%20PROD'&'server=xshembl04pap.she.pwj.com | grep href | sed 's/.*href="//' | sed 's/".*//' | sed 's/javascript:getLog//g' | sed "s/['();]//g" | grep -i 'service' | grep '^[a-zA-Z].*'); do 
curl -o $file -f -k -u "user:pwd" https://selfservice.pwj.com/cgi-bin/logviewer/index.cgi?getlogfile="$file"'&'server=xshembl04pap.she.pwj.com'&'numlines=100000000'&'appenv=MBL%20-%20PROD'&'directory=/app/smx_client_mob/data/log; done 
+0

[DontReadLinesWithFor](http://mywiki.wooledge.org/DontReadLinesWithFor)并引用您的变量用法,但除此之外,这看起来至少可用(即'grep' /'sed'链是丑陋的,并且几乎可以肯定地被清理掉。你也可以单独引用URL中的* entire * non'“$ file”'位,而不需要引用&符号。 – 2015-04-02 23:08:41