2011-07-30 37 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