UNIXサーバの稼動状況(psコマンド)、ディスク使用容量(dfコマンド)
で得た値を、毎日、自席PC(Windows2000 , メーラー自社製品 →
サイボウズの類)に、テキストファイルにて添付・送信してチェックを
しています。
添付されているテキストファイルは、直接ダブルクリックしてメモ帳で
閲覧しています。
ところが、ある日を境に、メモ帳で閲覧すると、改行が正しくされずに
表示されてしまい、現在に至ります。添付ファイルをローカルに保存
して、メモ帳ではなく TeraPad のようなテキストツールで開けば正常
に表示されます。
環境を一切変更していないし、メールを自動送信しているシェルも
もちろん変更していません。
よく云われることが、「Windows系の改行とUNIX系の改行が違う」原因
が考えられますが、そこで
perl -p -e 's/\n/\r\n/' < AAA.txt > BBB.txt
と強引に変換をかけても、自動送信しているシェルを流すと、BBB.txt
は、改行が正しく行われません。
その他にどんなことを確認したら良いでしょうか?
みなさんのお知恵を拝借させてください。
<参考までにメール自動送信シェルを記述します>
#!/bin/sh
#set -x
TARGETID="$TARGETID xxxxx@xxxxx.com"
NSFILE="/home/ns.txt"
OUTFILE="/home/send_data"
if [ -s $OUTFILE ];then
rm $OUTFILE >/dev/null 2>&1
fi
if [ -s $NSFILE ];then
echo "Subject: UNIX Server Information" >> $OUTFILE
echo "From: root@xxxxx.com" >> $OUTFILE
echo "Mime-Version: 1.0" >> $OUTFILE
echo "Content-Type: multipart/mixed; boundary=AAAA" >> $OUTFILE
echo "" >> $OUTFILE
echo "--AAAA" >> $OUTFILE
echo "Content-Type: text/plain" >> $OUTFILE
echo "" >> $OUTFILE
echo " Mail Send." >> $OUTFILE
echo "" >> $OUTFILE
echo " 1. ns (ns .txt)" >> $OUTFILE
echo "" >> $OUTFILE
if [ -s $NSFILE ]; then
echo "--AAAA" >> $OUTFILE
echo "Content-Type: text/plain" >> $OUTFILE
echo "Content-Disposition: attachment; filename=ns.txt">> $OUTFILE
echo "" >> $OUTFILE
cat $NSFILE >> $OUTFILE
echo "" >> $OUTFILE
fi
echo "--AAAA--" >> $OUTFILE
mail $TARGETID <$OUTFILE
else
exit 1
fi
> UNIXサーバの稼動状況(psコマンド)、ディスク使用容量(dfコマンド)
> で得た値を、毎日、自席PC(Windows2000 , メーラー自社製品 →
> サイボウズの類)に、テキストファイルにて添付・送信してチェックを
> しています。
>
> 添付されているテキストファイルは、直接ダブルクリックしてメモ帳で
> 閲覧しています。
>
> ところが、ある日を境に、メモ帳で閲覧すると、改行が正しくされずに
> 表示されてしまい、現在に至ります。添付ファイルをローカルに保存
> して、メモ帳ではなく TeraPad のようなテキストツールで開けば正常
> に表示されます。
>
> 環境を一切変更していないし、メールを自動送信しているシェルも
> もちろん変更していません。
>
> よく云われることが、「Windows系の改行とUNIX系の改行が違う」原因
> が考えられますが、そこで
> perl -p -e 's/\n/\r\n/' < AAA.txt > BBB.txt
> と強引に変換をかけても、自動送信しているシェルを流すと、BBB.txt
> は、改行が正しく行われません。
>
> その他にどんなことを確認したら良いでしょうか?
> みなさんのお知恵を拝借させてください。
現象面からは恐らくおっしゃっているとおり、改行問題以外考えられないと思うのですが、何で突然そうなってしまったなったのですかね????
改行を変換かけても駄目というのも今一わかりませんね。cat?かとも思いましたがそうではないはず。
但し、下記のスクリプトの代わりといっては何ですが、uuencodeを使ってテキスト系を添付するだけのテストスクリプトを書いてみましたが、これなら問題は出ませんね。(テストなんでファイルチェックはいい加減です。)
試してみると、良いかもしれません。
> <参考までにメール自動送信シェルを記述します>
>
> #!/bin/sh
> #set -x
>
> TARGETID="$TARGETID xxxxx@xxxxx.com"
>
> NSFILE="/home/ns.txt"
> OUTFILE="/home/send_data"
>
> if [ -s $OUTFILE ];then
> rm $OUTFILE >/dev/null 2>&1
> fi
>
> if [ -s $NSFILE ];then
> echo "Subject: UNIX Server Information" >> $OUTFILE
> echo "From: root@xxxxx.com" >> $OUTFILE
> echo "Mime-Version: 1.0" >> $OUTFILE
> echo "Content-Type: multipart/mixed; boundary=AAAA" >> $OUTFILE
> echo "" >> $OUTFILE
> echo "--AAAA" >> $OUTFILE
> echo "Content-Type: text/plain" >> $OUTFILE
> echo "" >> $OUTFILE
> echo " Mail Send." >> $OUTFILE
> echo "" >> $OUTFILE
> echo " 1. ns (ns .txt)" >> $OUTFILE
> echo "" >> $OUTFILE
>
> if [ -s $NSFILE ]; then
> echo "--AAAA" >> $OUTFILE
> echo "Content-Type: text/plain" >> $OUTFILE
> echo "Content-Disposition: attachment; filename=ns.txt">> $OUTFILE
> echo "" >> $OUTFILE
> cat $NSFILE >> $OUTFILE
> echo "" >> $OUTFILE
> fi
> echo "--AAAA--" >> $OUTFILE
>
> mail $TARGETID <$OUTFILE
>
> else
> exit 1
> fi
---------------------------------------------------------------------
#!/bin/sh
TARGETID="xxxxx@xxxxx.com"
ps > ns1.txt
perl -pe 's/\n/\r\n/' ns1.txt > ns.txt
NSFILE="/home/ns.txt"
NSFILE1="/home/ns1.txt"
OUTFILE="/home/send_data"
SUBJECT="UNIX Server Information"
if [ -s $OUTFILE ];then
rm $OUTFILE >/dev/null 2>&1
fi
if [ -s $NSFILE ];then
echo " Mail Send." >> $OUTFILE
echo "" >> $OUTFILE
echo " 1. ns (ns .txt)" >> $OUTFILE
echo "" >> $OUTFILE
uuencode $NSFILE ns.txt >> $OUTFILE
uuencode $NSFILE1 ns1.txt >> $OUTFILE
mail -s "$SUBJECT" "$TARGETID" < $OUTFILE
else
exit 1
fi
おやじさん、毎々お世話になっております。
下記拝読しました。問題なく改行されています。
ところが、この自動送信には複数のUNIXサーバの情報(3つ)が
添付送信されています。
早速、見よう見真似で改修してみたのですが、OUTFILE に全部入れて
しまっている関係上、全て Proxy1.txt の中身になっていて、
なぜか ns.txt だけは正常に中身が添付されています。
UNIXはズブの素人でして、ご教授頂ければ幸いです。
<以下、改修したシェル>
#!/bin/sh
#set -x
TARGETID="xxx@xxx.com"
perl -p -e 's/\n/\r\n/' < /home/proxy1_1.txt > /home/proxy1.txt
perl -p -e 's/\n/\r\n/' < /home/proxy2_1.txt > /home/proxy2.txt
perl -p -e 's/\n/\r\n/' < /home/ns_1.txt > /home/ns.txt
PROXY1FILE="/home/proxy1.txt"
PROXY2FILE="/home/proxy2.txt"
NSFILE="/home/ns.txt"
OUTFILE="/home/send_data"
SUBJECT="UNIX Server Information"
if [ -s $OUTFILE ];then
rm $OUTFILE >/dev/null 2>&1
fi
if [ -s $PROXY1FILE -o -s $PROXY2FILE -o -s $NSFILE ];then
echo "Subject: UNIX Server Information" >> $OUTFILE
echo "From: yyy@yyy.com" >> $OUTFILE
echo "" >> $OUTFILE
echo " Mail Send." >> $OUTFILE
echo "" >> $OUTFILE
echo " 1. proxy1 (proxy1.txt)" >> $OUTFILE
echo " 2. proxy2 (proxy2.txt)" >> $OUTFILE
echo " 3. ns (ns.txt)" >> $OUTFILE
echo "" >> $OUTFILE
uuencode $PROXY1FILE proxy1.txt >> $OUTFILE
uuencode $PROXY2FILE proxy2.txt >> $OUTFILE
uuencode $NSFILE ns.txt >> $OUTFILE
mail -s "$SUBJECT" "$TARGETID" < $OUTFILE
else
exit 1
fi
---------------------------------------------------------------------
> #!/bin/sh
> TARGETID="xxxxx@xxxxx.com"
> ps > ns1.txt
> perl -pe 's/\n/\r\n/' ns1.txt > ns.txt
> NSFILE="/home/ns.txt"
> NSFILE1="/home/ns1.txt"
> OUTFILE="/home/send_data"
> SUBJECT="UNIX Server Information"
> if [ -s $OUTFILE ];then
> rm $OUTFILE >/dev/null 2>&1
> fi
> if [ -s $NSFILE ];then
> echo " Mail Send." >> $OUTFILE
> echo "" >> $OUTFILE
> echo " 1. ns (ns .txt)" >> $OUTFILE
> echo "" >> $OUTFILE
> uuencode $NSFILE ns.txt >> $OUTFILE
> uuencode $NSFILE1 ns1.txt >> $OUTFILE
> mail -s "$SUBJECT" "$TARGETID" < $OUTFILE
> else
> exit 1
> fi
自己レスです。ルビーです。
チョット勘違いしておりました。
おやじさんが作成してくれたシェルで全てうまく行きました。
ほんとうにありがとうございました。
> おやじさん、毎々お世話になっております。
>
> 下記拝読しました。問題なく改行されています。
>
> ところが、この自動送信には複数のUNIXサーバの情報(3つ)が
> 添付送信されています。
>
> 早速、見よう見真似で改修してみたのですが、OUTFILE に全部入れて
> しまっている関係上、全て Proxy1.txt の中身になっていて、
> なぜか ns.txt だけは正常に中身が添付されています。
>
> UNIXはズブの素人でして、ご教授頂ければ幸いです。
>
>
>
> <以下、改修したシェル>
>
> #!/bin/sh
> #set -x
>
> TARGETID="xxx@xxx.com"
>
> perl -p -e 's/\n/\r\n/' < /home/proxy1_1.txt > /home/proxy1.txt
> perl -p -e 's/\n/\r\n/' < /home/proxy2_1.txt > /home/proxy2.txt
> perl -p -e 's/\n/\r\n/' < /home/ns_1.txt > /home/ns.txt
>
> PROXY1FILE="/home/proxy1.txt"
> PROXY2FILE="/home/proxy2.txt"
> NSFILE="/home/ns.txt"
> OUTFILE="/home/send_data"
> SUBJECT="UNIX Server Information"
>
> if [ -s $OUTFILE ];then
> rm $OUTFILE >/dev/null 2>&1
> fi
>
> if [ -s $PROXY1FILE -o -s $PROXY2FILE -o -s $NSFILE ];then
> echo "Subject: UNIX Server Information" >> $OUTFILE
> echo "From: yyy@yyy.com" >> $OUTFILE
> echo "" >> $OUTFILE
> echo " Mail Send." >> $OUTFILE
> echo "" >> $OUTFILE
> echo " 1. proxy1 (proxy1.txt)" >> $OUTFILE
> echo " 2. proxy2 (proxy2.txt)" >> $OUTFILE
> echo " 3. ns (ns.txt)" >> $OUTFILE
> echo "" >> $OUTFILE
>
> uuencode $PROXY1FILE proxy1.txt >> $OUTFILE
> uuencode $PROXY2FILE proxy2.txt >> $OUTFILE
> uuencode $NSFILE ns.txt >> $OUTFILE
>
> mail -s "$SUBJECT" "$TARGETID" < $OUTFILE
>
> else
> exit 1
> fi
>
>
> ---------------------------------------------------------------------
>
> > #!/bin/sh
>
> > TARGETID="xxxxx@xxxxx.com"
>
> > ps > ns1.txt
> > perl -pe 's/\n/\r\n/' ns1.txt > ns.txt
>
> > NSFILE="/home/ns.txt"
> > NSFILE1="/home/ns1.txt"
> > OUTFILE="/home/send_data"
> > SUBJECT="UNIX Server Information"
>
> > if [ -s $OUTFILE ];then
> > rm $OUTFILE >/dev/null 2>&1
> > fi
>
> > if [ -s $NSFILE ];then
> > echo " Mail Send." >> $OUTFILE
> > echo "" >> $OUTFILE
> > echo " 1. ns (ns .txt)" >> $OUTFILE
> > echo "" >> $OUTFILE
>
> > uuencode $NSFILE ns.txt >> $OUTFILE
> > uuencode $NSFILE1 ns1.txt >> $OUTFILE
>
> > mail -s "$SUBJECT" "$TARGETID" < $OUTFILE
>
> > else
> > exit 1
> > fi