![echo -e 명령의 출력을 두 개의 개별 파일에 동시에 추가하려면 어떻게 해야 합니까?](https://linux55.com/image/202785/echo%20-e%20%EB%AA%85%EB%A0%B9%EC%9D%98%20%EC%B6%9C%EB%A0%A5%EC%9D%84%20%EB%91%90%20%EA%B0%9C%EC%9D%98%20%EA%B0%9C%EB%B3%84%20%ED%8C%8C%EC%9D%BC%EC%97%90%20%EB%8F%99%EC%8B%9C%EC%97%90%20%EC%B6%94%EA%B0%80%ED%95%98%EB%A0%A4%EB%A9%B4%20%EC%96%B4%EB%96%BB%EA%B2%8C%20%ED%95%B4%EC%95%BC%20%ED%95%A9%EB%8B%88%EA%B9%8C%3F.png)
먼저, 이 문제를 해결하는 데 시간과 노력을 쏟아주셔서 감사합니다. 이제 더 이상 고민하지 않고 제 질문입니다.
저는 네트워크 보안을 전공하고 있으며 대상 호스트를 열거하는 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