컬에서 sh로 전송하기 전에 쉘 스크립트를 읽고 확인하십시오(curl -s [url] | sh).

컬에서 sh로 전송하기 전에 쉘 스크립트를 읽고 확인하십시오(curl -s [url] | sh).

네트워크에서 쉘 스크립트를 실행해야 할 때마다 curl -s [url] | sh먼저 url웹 브라우저에서 스크립트를 열어 스크립트가 악성이 아닌지, 실행하기에 안전한지 확인합니다.

명령줄에서 스크립트를 읽고 스크립트를 읽은 후 실행을 확인하는 명령줄 트릭을 본 기억이 납니다. 제 기억이 맞다면 curl -s [url] | something...here | sh소프트웨어를 설치할 필요가 없는 것 같습니다 .

이 트릭을 아는 사람이 있나요?

답변1

moreutils호출에는 vipe파일이 표준 출력으로 전달되기 전에 파일을 보고 수정할 수 있는 편집기에 표준 입력을 표시하는 유틸리티가 있습니다.

설치하지 않으려면 moreutils다음과 같이 할 수 있습니다.

file=$(mktemp); curl -s "$url" > $file; $EDITOR $file; sh $file; rm $file

mktemp이미 존재하며 coreutils시스템에 설치되었을 가능성이 높습니다.

답변2

전용 도구가 필요할 정도로 자주 다운로드하고 실행할 스크립트의 소스(또는 소스)를 어디서 찾을 수 있는지는 말할 것도 없고 왜 이 작업을 수행하려는지 상상하기 어렵습니다.

curl(또는 또는 기타 무엇이든)을 사용 하여 wget스크립트를 다운로드하고 snarf확인하고 편집한 다음(특정 시스템에 대한 일부 사용자 정의가 필요하지 않은 드문 스크립트입니다) 실행한 다음 실행하십시오. 을 chmod사용하거나 사용하여 실행 가능하게 만드십시오 sh scriptname.

답변3

나는 당신이 설명하는 것을 수행하는 유틸리티를 생각할 수 없지만 쉘 조각으로 만들기에는 충분히 쉽습니다.

script=$(curl -s "$url")
printf "%s\nDo you want to run this script? [yN]" "$script"
read line
case $line in
  [Yy]|[Yy][Ee][Ss]) sh -c "$script";;
esac

이는 스크립트가 텍스트 파일이라고 가정합니다. Null 바이트는 지원되지 않습니다. 셸에 따라 Null 바이트가 제거되거나 줄 또는 전체 파일이 잘릴 수 있습니다. 또한 파일 끝에 있는 모든 줄 바꿈이 제거됩니다(heredoc 구성이 하나를 추가합니다). 이는 일반적으로 스크립트에서는 문제가 되지 않지만, 예를 들어 스크립트가 추출한 바이너리 형식의 아카이브로 끝나는 경우 문제가 될 수 있습니다. 이러한 바이너리 스크립트가 어느 시점에서 잘못 코딩될 위험이 크기 때문에 이는 파일을 배포하는 매우 안정적인 방법이 아닙니다. 그럼에도 불구하고 스크립트를 임시 파일에 작성하여 처리할 수 있습니다.

script_file=$(mktemp)
curl -s "$url" | tee "$script_file"
printf "Do you want to run this script? [yN]"
read line
case $line in
  [Yy]|[Yy][Ee][Ss]) sh "$script_file";;
esac
rm "$script_file"

답변4

당신의 가정읽다-p(프롬프트)를 알면 shebang에 지정된 인터프리터를 사용하여 스크립트를 실행할 필요가 없습니다.

curl URL | tee /tmp/x && read -p "execute?" key ; test $key = y && sh /tmp/x

관련 정보