web-dev-qa-db-ja.com

スクリプトを取得して実行する

http://dl.dropbox.com/u/11210438/flockonus-stack.sh からスクリプトをダウンロードして実行します。私の推測では、wgetを使用して名前を変更し、chmodして実行します。

Ubuntuでそれを行うためのコマンドは何ですか?

28
Fabiano Soriani

注意

スクリプトを実行する前に、スクリプトを書いた人を信頼していますか?

たとえば、スクリプトにこれが含まれることを期待しましたか?

echo "brain1" > /etc/hostname

ホスト名を変更しようとします。


今後の参考のために、スクリプトが正しく、悪意のないものであることを確認した後、次のように1行で実行できます。

wget -O - http://dl.dropbox.com/u/11210438/flockonus-stack.sh | bash

ただし、個別にダウンロードして、最初に実行する前に読んでください。

また、ダウンロードしたスクリプト内の対話型プロンプトは、この方法では正しく機能しない可能性があることにも注意してください。

53
Mikel

非インタラクティブスクリプト

_wget -O - http://website.com/my-script.sh | bash
_

この方法を使用する場合、インタラクティブスクリプトは機能しないことに注意してください。


インタラクティブスクリプト

インタラクティブなスクリプトを機能させるために、これを使用できます。

_bash <(wget -qO- http://website.com/my-script.sh)
_

rootとして実行する必要があるインタラクティブスクリプト

警告:これは非常に危険です。推奨されません。

_Sudo su -c "bash <(wget -qO- http://website.com/my-script.sh)" root
_

<(...)を使用すると仮想ファイルが作成され、そのファイル記述子にはルートのbashインスタンスからアクセスできないため、_Sudo bash_を単純に使用することはできません。これは、仮想ファイルを読み取る必要があるのと同じユーザーで実行する必要があるため、rootユーザーのシェル内で独自のコマンドとして送信する必要があります。

11
Nathan F.

そのスクリプトは私からのものであり、安全です。ワンライナーを愛していましたが、実行されなかったインタラクティブラインがいくつかあります。

Apt-getによって呼び出されたdpkgが実行されると、stdinがフラッシュされます。 curl blah | bashのようなコマンドを使用している場合は、基本的にページのコンテンツをSTDIN経由でbashに送信しています。コマンドの1つがapt-getである場合、実行すると、他のすべてがフラッシュされます。

トリックは、このようなコマンドを使用することですapt-get install --yes denyhosts </dev/null。これにより、apt-getに別の入力が与えられ、残りのスクリプトの代わりに/ dev/nullがフラッシュされるだけです。

リモートスクリプトを介して何かをインストールする完全な例を確認する場合は、このスクリプトで settinging denyhosts を確認することができます。

記録のために、私はこれのためにwgetよりもカールを好んでいますが、wgetも問題ないはずです。

5
Zoredache
#!/bin/sh
if [ ! -f "/tmp/flockonus-stack.sh" ]
then
    wget -O /tmp/flockonus-stack.sh http://dl.dropbox.com/u/11210438/flockonus-stack.sh
fi

sh /tmp/flockonus-stack.sh
4
lynxman

これらすべての例には、かなり重要な点が欠けています。 URLを使用する場合http://dl.dropbox.com/u/11210438/flockonus-stack.sh、スクリプトは、ダウンロードするたびに監査する必要があります。スクリプトは、あなたとDropboxの間のネットワークパス上の誰でも変更できるためです。 http s://://dl.dropbox.com/u/11210438/flockonus-stack.shに切り替えると、あなたはその不安の原因を持つことはありません。

(Dropboxはhttp URLをhttpsにリダイレクトしようとしますが、ネットワーク攻撃の場合、wgetは実際のDropboxと話すことができず、リダイレクトを見ることはありません)

4
pde

Wgetで指定したとおりにダウンロードして、直接実行してみてください。空想を得て、ダウンロードしたいスクリプトなどの変数を使用することができますが、これでうまくいきます

例えば:

!#/bin/bash

#Change to temp directory
cd /tmp

#Download file using wget
wget http://dl.dropbox.com/u/11210438/flockonus-stack.sh

#Execute the file

sh flockonus-stack.sh
2
Brett