sudo 명령의 출력만 얻을 수 있습니까?

sudo 명령의 출력만 얻을 수 있습니까?

sudo 명령의 출력을 일부 파일, 즉 sudo를 작성한 후 터미널에 표시되는 줄에 쓰고 싶습니다.

[sudo] password for user:

sudo ls > fileor를 사용하면 sudo ls 2> file전체 명령의 stdout과 stderr을 각각 얻습니다. 또한 사용할 수 없습니다. 그렇지 sudo > file않으면 sudo 2> file오류가 발생하므로 sudo 이후에 일부 옵션이나 명령을 사용해야 합니다. 그렇다면 가능합니까?

답변1

를 사용하면 sudo -S유틸리티 sudo가 표준 오류에 프롬프트를 기록하고 표준 입력에서 암호를 읽습니다. 표준 오류의 출력을 캡처할 수 있습니다 2>filename.

실행할 명령을 제공해야 하며 sudo표준 오류는 다음과 같습니다.이것파일 설명자를 처리하지 않는 한 명령은 파일로 리디렉션됩니다.

sudo -C 4 -S sh -c 'ls non-existant 2>&3' 3>&2 2>sudo.stderr

그러면 출력이 리디렉션됩니다.sudosudo.stderr실행된 명령을 원래의 표준 오류 스트림에 기록하는 것은 허용합니다 . 이를 위해 표준 오류의 복사본으로 파일 설명자 3을 연 다음 명령에서 이 파일 설명자에 명시적으로 씁니다. 이를 위해 우리는 다음 sudo을 요구 해야 합니다.생소한파일 설명자 3(기본적으로 이 작업을 수행함) 이를 위해서는 관리자가 파일 closefrom_override에서 옵션을 활성화해야 할 수도 있습니다 sudoers.

위 명령에는 미묘한 보안 문제가 있을 수 있습니다.

관련 정보