Plesk 11的shellscript cron作业中找不到命令错误

时间:2014-05-03 01:30:35

标签: linux bash shell cron plesk

希望对此提出一些建议或指导。我对大多数这些东西都不是很熟悉,但已经设法导航,测试并检查以达到这一点。一次解决一个错误!

运行Plesk 11.0.9我试图设置一个运行shell脚本的简单Cron作业来检测接近满的邮箱,这样我或用户就可以得到通知并解决问题。

在假设这将检查所有邮箱的情况下以root用户身份运行脚本。

该脚本来自Plesk论坛(上篇文章http://forum.parallels.com/showthread.php?106635-Qmail-e-mail-quota-notification-script-for-Plesk-9-3-10),其中许多用户似乎已经取得了成功但是在运行作业时我收到此错误

/usr/local/psa/bin/mboxfull.sh:第26行:bc:找不到命令

/usr/local/psa/bin/mboxfull.sh:line 32:bc:command not found

这似乎是一个非常通用的“写的内容不起作用”错误所以我的搜索没有给我很多方向来解决这个问题。

下面的完整脚本标有“违规”行。任何方向帮助都将非常感谢!

#! /bin/bash
# Mail quota reaching it's limit e-mail notification
# script for Plesk 9.3+ / Plesk 10 & Qmail
# Modified by "Scy" from the original script
# provided by "azur99" in Plesk forum:
# http://forum.parallels.com/showthread.php?t=71666
#setenv QMAILUSER 'do-not-reply'
MAILROOT=/var/qmail/mailnames
cd $MAILROOT > /dev/null
for DIR in *.*;do
        cd $MAILROOT/$DIR
        for MAILBOX in * ;do
                if [ -d $MAILBOX ]
                        then

                        # look for specific mailbox quota file and set mailbox softquota
                        QUOTAFILE=$MAILROOT/$DIR/$MAILBOX/Maildir/maildirsize

            # Fetching mailbox quota size in bytes
            HARDQUOTA=$((`head -1 $QUOTAFILE | cut -d S -f1`))
            if [ "$HARDQUOTA" -eq 0 ]; then
                continue
            fi

            # Fetching space used by mailbox in bytes 
            (THIS IS LINE 26!) MBOXSPACE=$((`tail -n +2 $QUOTAFILE | cut -c1-12 | paste -sd+|bc`)) 

            # Calculate the quota limit required for mail warning (85% for default)
            SOFTQUOTA=$((10 * $HARDQUOTA / 100))

            # Calculate mailbox usage percentage (with two decimals)
            (THIS IS LINE 32) MBOXPERCENT=$(echo "scale=2; $MBOXSPACE*100/$HARDQUOTA" | bc) 

            # Check if the mailbox is full enough for warning, and if, send the warning mail
            if [ $HARDQUOTA -gt 0 -a $MBOXSPACE -gt $SOFTQUOTA ]; then

                # Let's generate the values in megabytes (with two decimals)
                HARDQUOTA=$(echo "scale=2; $HARDQUOTA/1048576" | bc)
                if [ "$(echo $HARDQUOTA | cut -c1)" = "." ] ; then HARDQUOTA="0"$HARDQUOTA
                fi
                MBOXSPACE=$(echo "scale=2; $MBOXSPACE/1048576" | bc)
                if [ "$(echo $MBOXSPACE | cut -c1)" = "." ] ; then MBOXSPACE="0"$MBOXSPACE
                fi

/usr/sbin/sendmail -t << EOF
To: $MAILBOX@$DIR
From: ******@*******.com
Bcc: ****@******.com
Subject: Your mailbox is almost full
Dear mail user,

Your e-mail $MAILBOX@$DIR is about to reach its maximum quota. You are using $MBOXSPACE MB ($MBOXPERCENT%) out of the maximum quota $HARDQUOTA MB.

We would kindly suggest you to delete some older messages and purge them to free some space in the mailbox. If the quota limit is reached, you won't be able to receive any new messages and the sender will receive  'mail quota exceeded' notifications.

Another option is to configure your POP3 mail client (e.g. Microsoft Outlook, Mozilla Thunderbird or Apple Mail) to delete the messages on the server mailbox every time the mail account is read.

This is an automated message, do not reply. If you require any assistance, please open a support ticket at http://*******/support.php .
EOF

            fi


                fi
        done;

done;

1 个答案:

答案 0 :(得分:1)

line 26: bc: command not found

表示您的服务器上未安装“bc”实用程序。

尝试按照以下命令安装它:

# yum install bc

或类似于debian的系统:

# apt-get install bc