2012-04-29 18 views
1

mailxを使用して電子メールを送信するbashスクリプトがあります。メールボックス設定は.mailrcにあります。私はルートとしてそれを実行しています:bash - cronでスクリプトを実行しているときに "無効または不完全なマルチバイトまたはワイド文字"

linux:~ # ./lprojekt.sh 
Resolving host smtp.gmail.com . . . done. 
Connecting to 173.194.70.109 . . . connected. 
220 mx.google.com ESMTP n20sm30980415wiw.5 
>>> EHLO linux.site 
250-mx.google.com at your service, [95.49.133.188] 
250-SIZE 35882577 
250-8BITMIME 
250-STARTTLS 
250 ENHANCEDSTATUSCODES 
>>> STARTTLS 
220 2.0.0 Ready to start TLS 
>>> EHLO linux.site 
250-mx.google.com at your service, [95.49.133.188] 
250-SIZE 35882577 
250-8BITMIME 
250-AUTH LOGIN PLAIN XOAUTH 
250 ENHANCEDSTATUSCODES 
>>> AUTH LOGIN 
334 VXNlcm5hbWU6 
>>> bG1mYnlkYjlAZ21haWwuY29t 
334 UGFzc3dvcmQ6 
>>> cHJvamVrdDEyMz== 
235 2.7.0 Accepted 
>>> MAIL FROM: <[email protected]> 
250 2.1.0 OK n20sm30980415wiw.5 
>>> RCPT TO: <[email protected]> 
250 2.1.5 OK n20sm30980415wiw.5 
>>> DATA 
354 Go ahead n20sm30980415wiw.5 
>>> . 
250 2.0.0 OK 1335692819 n20sm30980415wiw.5 
>>> QUIT 
221 2.0.0 closing connection n20sm30980415wiw.5 

ご覧のとおり、正しく動作します。

しかし、このスクリプトをcronで実行しようとすると問題が発生します。

は、ここに私の/ etc/crontabの内容です:

SHELL=/bin/bash 
PATH=/usr/bin:/usr/sbin:/sbin:/bin:/usr/lib/news/bin 
MAILTO=root 
HOME=/root 
# 
# check scripts in cron.hourly, cron.daily, cron.weekly, and cron.monthly 
# 
-*/15 * * * * root test -x /usr/lib/cron/run-crons && /usr/lib/cron/run-crons >/dev/null 

* * * * * root /root/lprojekt.sh >> /root/Desktop/log.txt 

各分には、(それが今ちょうどデバッグのためです)、rootユーザーがメールを取得:

Message 40: 
From [email protected] Sun Apr 29 13:50:01 2012 
X-Original-To: root 
Delivered-To: [email protected] 
From: [email protected] 
To: [email protected] 
Subject: Cron <[email protected]> /root/lprojekt.sh >> /root/Desktop/log.txt 
X-Cron-Env: <SHELL=/bin/bash> 
X-Cron-Env: <PATH=/usr/bin:/usr/sbin:/sbin:/bin:/usr/lib/news/bin> 
X-Cron-Env: <MAILTO=root> 
X-Cron-Env: <HOME=/root> 
X-Cron-Env: <LOGNAME=root> 
X-Cron-Env: <USER=root> 
Date: Sun, 29 Apr 2012 13:50:01 +0200 (CEST) 

Invalid or incomplete multibyte or wide character 
. . . message not sent. 

この問題の理由は何ですか?それを解決するには?事前におかげで助けてください。

+1

スクリプトに 'locale'コマンドの呼び出しを挿入し、ターミナルとcronから実行したときの出力を比較します。ロケール出力の –

+1

1行が異なっている: のcron: LC_TYPE = "POSIX" マニュアルでは、実行します。 LC_TYPE = pl_PL.UTF-8 cronのためLC_TYPEを設定する方法は? –

+1

LC_CTYPEではなくLC_TYPEですか?後者は正しいスペルでなければなりません。ロケール変数POSIXまたはpl_PL.UTF-8の他の値は何ですか? SHELLなどと同様に、crontabファイルに直接環境変数を設定することができます.LC_CTYPEおよび/またはLC_ALLおよび/またはLANGをpl_PL.UTF-8に設定してみてください。あるいは、スクリプトやそれが使用するデータファイルから非ASCII文字を見つけて削除することもできます。 –

答えて

3

mark a comment as an answerへの機能要求が拒否されているため、ここで上記の解決策をコピーします。

LC_CTYPEではなくLC_TYPEですか。後者は正しいスペルでなければなりません。ロケール変数POSIXまたはpl_PL.UTF-8の他の値は何ですか? SHELLなどと同様に、crontabファイルに直接環境変数を設定することができます.LC_CTYPEおよび/またはLC_ALLおよび/またはLANGをpl_PL.UTF-8に設定してみてください。あるいは、スクリプトやそれが使用するデータファイルから非ASCII文字を見つけて削除することもできます。 - n.m.

あなたはそうです、LC_TYPEの代わりにLC_CTYPEがあります。他の変数はPOSIXです。この行をスクリプトに追加しました:export LC_CTYPE = pl_PL.UTF-8これは動作します。どうもありがとうございました! - Daniel Gadawski