まず、この問題を解決するのに時間と労力を費やしていただきありがとうございます。もう悩んでいない私の質問です。
私はネットワークセキュリティを専攻しており、ターゲットホストを列挙するbashスクリプトを作成しようとしています。機能内で繰り返される複数のecho -eコマンドがありますが、侵入テストレポートに明確に表示されるようにするには、出力ファイルの場所に配置する必要があります。また、コマンド出力を適切なファイルに送信することもできます。私の質問はこれです:
両方のファイルで正しい場所を占めるように、エコーメッセージ(下図)の出力をどのように追加しますか?(短い抜粋です)
(omitted)
Enum_Report=(Enum_Report-$(date "+%F-%H-%M-%S").txt)
Enum_Log=(Enum_Webserver_Log-$(date "+%F-%H-%M-%S").txt)
Err_Log=(Enum_Report_Error_Log-$(date "+%F-%H-%M-%S").txt)
(omitted)
echo -e "\nWhat's the kernel version? Is it 64-bit?\n" >> $Enum_Report >> $Err_Log
{
cat /proc/version
uname -a
uname -mrs
dmesg | grep Linux
ls /boot | grep vmlinuz-
} >> $Enum_Report 2>>$Err_Log
echo -e "\nWhats cached, IP and/or MAC addresses?\n" >>$Enum_Report >> $Err_Log
{
arp -e
route
/sbin/route -nee
} >> $Enum_Report 2>>$Err_Log
(omitted)
現在、両方のファイルで使用されているすべてのコマンドグループの先頭に必要な出力だけが$ Err_Logにエコーされます。デフォルトでは、このスクリプトで実行されているすべてのコマンドをヘッダーと2つの別々のファイルに書きたいと思います。 stdoutとstderrをリダイレクトすることは、コマンドグループの出力を別々のファイルに分割するのに最適な方法です。もちろん、コマンドが実行される前に両方のファイルにエコーメッセージを追加するより簡単な方法が必要です。これにより、echoコマンドstdoutが$ Enum_Reportおよび$Err_Logに含まれ、各コマンドグループの出力が正常に実行されます。
参照するその他の情報:
私のターゲットホストは、Ubuntu 14.04.5 LTSを実行しているKali-boxと同じネットワーク上の仮想マシンです。
もう一度ありがとうございます。
-N-
答え1
tee
出力を複数のファイルにリダイレクトすることはできませんが、またはを使用できますtee -a
。
echo -e "\nWhat's the kernel version? Is it 64-bit?\n" | tee -a $Enum_Report >> $Err_Log