ネットワーク上でシェルスクリプトを実行する必要があるたびに、curl -s [url] | sh
まずurl
Webブラウザでスクリプトを開き、スクリプトが悪意のないものであること、および実行に安全であることを確認してください。
コマンドラインからスクリプトを読み、スクリプトを読み取った後に実行を確認するコマンドライントリックを見たことがあります。私の記憶が正しい場合は、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