カールからshに転送する前に、シェルスクリプトを読んで確認してください(curl -s [url] | sh)。

カールからshに転送する前に、シェルスクリプトを読んで確認してください(curl -s [url] | sh)。

ネットワーク上でシェルスクリプトを実行する必要があるたびに、curl -s [url] | shまずurlWebブラウザでスクリプトを開き、スクリプトが悪意のないものであること、および実行に安全であることを確認してください。

コマンドラインからスクリプトを読み、スクリプトを読み取った後に実行を確認するコマンドライントリックを見たことがあります。私の記憶が正しい場合は、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

これはスクリプトがテキストファイルであると仮定します。ヌルバイトはサポートされていません。シェルによっては、ヌルバイトが削除されたり、行またはファイル全体が切り捨てられることがあります。また、ファイルの末尾にあるすべての改行が削除されます(heredoc構成は1つを追加します)。これは通常スクリプトでは問題ではありませんが、たとえば、スクリプトが抽出したバイナリ形式のアーカイブで終わると問題になる可能性があります。これらのバイナリスクリプトがある時点で誤ってコーディングされる危険性が高いため、これはファイルを配布する非常に信頼性の高い方法ではありません。それにもかかわらず、スクリプトを一時ファイルに作成して処理できます。

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

関連情報