2011-07-30 38 views
1

为什么我会收到这些错误?为什么lftp将URL的部分解释为新命令?

Unknown command pass=user. 
Unknown command key=site-key. 

难道是因为我使用的lftp 什么?

这里就是我的bash脚本:

#!/bin/sh 

########################################################################## 
# 
# Send queued CiviMail and process back channel for CiviCRM v2.2+ 
# Make this executable and invoke from cron every (say) 15 minutes 
# Not yet tested: no lock on this if previous cron hadn't finished 
# but civimail.cronjob.php and CiviMailProcessor.php are multi-entrant 
# 
########################################################################## 
# 
# Per-host configuration 
# 

drupalAuthUser='user' 
drupalAuthPass='password' 
civicrmSiteKey='site-key' 

imapHost='civicrm.example.org' 
imapUser='[email protected]' 
#imapPass='password' 
# 
# Prepare URL 
# 
crmbinurl="http://$imapHost/sites/all/modules/civicrm/bin" 
crmauthn="?name=$drupalAuthUser&pass=$drupalAuthPass&key=$civicrmSiteKey" 
# 
echo "Run Drupal cron then check for and send queued CiviMail" 
### Heading ## 
civimail="${crmbinurl}/civimail.cronjob.php${crmauthn}" 
echo $civ 
## Heading ##imail 
lftp -c "get $civimail > /dev/null" 
# 
# Wait 10 seconds 
# 
sleep 2 
# 
# echo "Process CiviMail backchannel" 
# 
backchan="${crmbinurl}/CiviMailProcessor.php${crmauthn}" 
echo $backchan 
## Heading ## 
lftp -c "get $backchan > /dev/null" 

运行./civicrmcron.sh给出了这样的输出:因为在你的网址为$ crmauthn您与符号的

Run Drupal cron then check for and send queued CiviMail 
http://civicrm.example.org/sites/all/modules/civicrm/bin/civimail.cronjob.php?name=user&pass=password&key=site-key 
Unknown command `pass=user'. 
Unknown command `key=site-key'. 
[22328] Moving to background to complete transfers... 
http://civicrm.example.org/sites/all/modules/civicrm/bin/civimail.cronjob.php?name=user&pass=password&key=site-key 
Unknown command `pass=user'. 
Unknown command `key=site-key'. 
[22332] Moving to background to complete transfers... 
+1

由于您使用的是http,我会推荐wget或curl。 – arunkumar

+0

和wget或curl中的命令是什么? – ibanezz

+0

'wget --quiet $ civimail'或者如果这是产生输出,你不想'wget $ civimail>/dev/null 2>&1' – arunkumar

回答

1

它。如果使用单引号,应该工作:

crmauthn='?name='${drupalAuthUser}'&pass='${drupalAuthPass}'&key='${civicrmSiteKey} 

或者:

crmauth="'?name='${drupalAuthUser}'&pass='${drupalAuthPass}'&key='${civicrmSiteKey}" 
+0

如果我做你说的工作,但比url获得:http:// civicrm.example.org/sites/all/modules/civicrm/bin/civimail.cronjob.php?name=user\&pass=password\&key=site-key,这不起作用 – ibanezz

+0

它看起来像读取像IM宣布线新变量=该字符串中的值:S – ibanezz

+1

@ibanezz对不起,我的坏(不应该尝试通过电话回答)...您应该使用单引号,以便&符号不代表新命令。我会编辑我的上面的答案。 – cmbuckley

0

使用链接代替的lftp

#!/bin/bash 

drupalAuthUser="user" 
drupalAuthPass="password" 
civicrmSiteKey="site-key" 

imapHost="civicrm.example.org" 
imapUser="[email protected]" 
imapPass="password" 

crmbinurl="http://${imapHost}/sites/all/modules/civicrm/bin" 
crmauthn="?name=${drupalAuthUser}&pass=${drupalAuthPass}&key=${civicrmSiteKey}" 

echo "CiviMail CronJob" 
civimail="${crmbinurl}/civimail.cronjob.php${crmauthn}" 
echo " * ${civimail}" 
links -source ${civimail} > /dev/null 

sleep 2 

echo "Process CiviMail backchannel" 
backchan="${crmbinurl}/CiviMailProcessor.php${crmauthn}" 
echo " * ${backchan}" 
links -source $backchan > /dev/null