2

出力をログに記録したいスケジュールされた UNIX スクリプトがあります。ユーザー インターフェイスの制限により cron ファイルを編集できず、コマンドに >> logfile を追加できません。出力をログに送信するためにスクリプト自体に追加できるものはありますか?

{

printf poo

 #Do not change
PRINTF=/usr/bin/printf
MSMTP=/usr/local/bin/msmtp
MSMTPCONF=/var/etc/msmtp.conf

 #Can be changed
FROM="nas4free@usinfosec.com"
TO="dpatino@usinfosec.com"
MDIR="CaseData"
SUBJECT="$MDIR Backup Report"


} > /mnt/support/logs/$SUBJECT.log
#BODY="$(cat /mnt/support/logs/test.log)"
#$PRINTF "From:$FROM\nTo:$TO\nSubject:$SUBJECT\n\n$BODY" | $MSMTP --file=$MSMTPCONF -t
4

3 に答える 3

6

試す

#!/bin/bash
exec > /tmp/myLog.log 2>&1
set -x

ログには次のように表示されます。

+ echo 'Hello World!'
Hello World!
于 2013-06-05T09:52:15.513 に答える
3

1 つの方法は、スクリプトを中かっこで囲み、以下に示すように出力をリダイレクトすることです。

#!/bin/bash
{
# script contents here
echo running script
} > logfile
于 2013-03-18T18:20:18.030 に答える
0

スクリプトの先頭に次の行を追加します

log_file_path="/tmp/output.log"
log() { while IFS='' read -r line; do echo "$line" >> "$log_file_path"; done; };
exec > >(tee >(log)) 2>&1

変更を加えたスクリプト

PRINTF=/usr/bin/printf
MSMTP=/usr/local/bin/msmtp
MSMTPCONF=/var/etc/msmtp.conf
FROM="nas4free@usinfosec.com"
TO="dpatino@usinfosec.com"
MDIR="CaseData"
SUBJECT="$MDIR Backup Report"

{

printf poo  


} > /mnt/support/logs/$SUBJECT.log
#BODY="$(cat /mnt/support/logs/test.log)"
#$PRINTF "From:$FROM\nTo:$TO\nSubject:$SUBJECT\n\n$BODY" | $MSMTP --file=$MSMTPCONF -t
于 2013-03-18T18:03:58.157 に答える