Почему lftp интерпретирует части URL-адресов как новые команды? - PullRequest
1 голос
/ 30 июля 2011

Почему я получаю эти ошибки?

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='civicrm@example.org'
#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 дает этот вывод:

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...

Ответы [ 2 ]

1 голос
/ 30 июля 2011

Это из-за ваших амперсандов в вашем URL для $ crmauthn.Если вы используете одинарные кавычки, он должен работать:

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

или:

crmauth="'?name='${drupalAuthUser}'&pass='${drupalAuthPass}'&key='${civicrmSiteKey}"
0 голосов
/ 31 июля 2011

Используйте ссылки вместо lftp .

#!/bin/bash

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

imapHost="civicrm.example.org"
imapUser="civicrm@example.org"
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
...