echo -e 명령의 출력을 두 개의 개별 파일에 동시에 추가하려면 어떻게 해야 합니까?

echo -e 명령의 출력을 두 개의 개별 파일에 동시에 추가하려면 어떻게 해야 합니까?

먼저, 이 문제를 해결하는 데 시간과 노력을 쏟아주셔서 감사합니다. 이제 더 이상 고민하지 않고 제 질문입니다.

저는 네트워크 보안을 전공하고 있으며 대상 호스트를 열거하는 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로 에코됩니다. 기본적으로 이 스크립트에서 실행되는 모든 명령을 헤더와 두 개의 별도 파일에 기록하고 싶습니다. 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

관련 정보