Http://dl.dropbox.com/u/11210438/flockonus-stack.sh adresinden bir betiği indirmek ve çalıştırmak istiyorum. Tahminim, wget'ı yeniden adlandırma kullanmak, chmod kullanmak ve yürütmek.
Ubuntu'da bunu yapmanın komutları neler?
Http://dl.dropbox.com/u/11210438/flockonus-stack.sh adresinden bir betiği indirmek ve çalıştırmak istiyorum. Tahminim, wget'ı yeniden adlandırma kullanmak, chmod kullanmak ve yürütmek.
Ubuntu'da bunu yapmanın komutları neler?
Yanıtlar:
Dikkatli
Senaryoyu çalıştırmadan önce, yazan kişiye güveniyor musunuz?
Örneğin, betiğin bunu içermesini bekliyor muydunuz?
echo "brain1" > /etc/hostname
Bu, ana bilgisayar adınızı değiştirmeye çalışır.
Gelecekte başvurmak için, komut dosyasının doğru olduğunu ve kötü niyetli olmadığını doğruladıktan sonra, aşağıdaki gibi bir satırda çalıştırabilirsiniz:
wget -O - http://dl.dropbox.com/u/11210438/flockonus-stack.sh | bash
Ancak, ayrı olarak indirin ve ilk kez çalıştırmadan önce okuyun.
Ayrıca, indirilen betiğin içindeki etkileşimli istemlerin bu yöntemi kullanarak düzgün çalışmayabileceğini unutmayın.
apt-get install
çizgiler? Herhangi apt-get
bir ekstra bağımlılık kurarsanız, size soracak ve eğer yapamazsa güvenli olması için çıkacaktır. Tüm bağımlı paketleri komut satırı argümanlarına ekleyin ya da eklemeyi düşünün -y
, örn.apt-get -y install...
Etkileşimli Olmayan Komut Dosyaları
wget -O - http://website.com/my-script.sh | bash
Bu yöntemi kullanırken, etkileşimli komut dosyalarının çalışmayacağını unutmayın.
İnteraktif Scriptler
Etkileşimli komut dosyalarının çalışmasını sağlamak için bunu kullanabilirsiniz:
bash <(wget -qO- http://website.com/my-script.sh)
Kök olarak çalıştırılması gereken Etkileşimli Komut Dosyaları
Uyarı: Bu son derece tehlikelidir. Tavsiye edilmez.
sudo su -c "bash <(wget -qO- http://website.com/my-script.sh)" root
sudo bash
Kullanmanın <(...)
sanal bir dosya oluşturacağından ve bunun dosya tanımlayıcısına kök bash örneğinden erişilemeyeceğinden, kullanımı basit yapamayacağınızı unutmayın . Sanal dosyayı okuması gereken aynı kullanıcı üzerinde yürütülmesi gerekir, bu nedenle kök kullanıcı kabuğuna kendi komutu olarak gönderilmesi gerekir.
Bu senaryo benden, güvenli .. Bir liner'ı çok sevdim, ama, yayınlanmayan bazı etkileşimli çizgiler var .. neden olmasın?
Dpkg çalıştığında apt-get adındaki stdin'i temizler. Eğer böyle bir komut kullanıyorsanız curl blah | bash
, o zaman temel olarak STDIN üzerinden bash sayfasına sayfanın içeriğini gönderiyorsunuzdur. Komutlarınızdan biri apt-get ise, o zaman çalışır, diğer her şey silinir.
İşin püf noktası, böyle bir komut kullanmaktır apt-get install --yes denyhosts </dev/null
. Bu, apt-get öğesine farklı bir girdi verir ve betiğinizin geri kalan kısmı yerine / dev / null komutunu kullanır.
Uzak bir komut dosyasıyla bir şey yüklemenin tam bir örneğini görmek istiyorsanız, denyhost'ları ayarlamak için bu komut dosyasına bakmak isteyebilirsiniz.
Kayıt için, bunun için wget üzerinde kıvrılmayı tercih ediyorum, ama wget da iyi olmalı.
Bu örneklerin hepsinde oldukça önemli bir nokta eksik. URL'yi kullanıyorsanız, http://dl.dropbox.com/u/11210438/flockonus-stack.sh
betiği her indirdiğinizde denetlemeniz gerekir, çünkü siz ve dropbox arasındaki ağ yolundaki herhangi biri tarafından değiştirilebilir. Eğer geçerseniz http ler : //dl.dropbox.com/u/11210438/flockonus-stack.sh , sen güvensizlik bu kaynağı olmayacaktır.
(Dropbox, http URL’yi https’ye yönlendirmeye çalışır, ancak bir ağ saldırısı durumunda wget hiçbir zaman gerçek dropbox’la konuşamaz ve yönlendirmeyi asla görmez.)
Wget ile belirttiğiniz gibi indirmeyi ve sonra doğrudan çalıştırmayı deneyin. Fantezi ve indirmek istediğiniz komut dosyası vb değişkenleri kullanabilirsiniz, ancak bu hile yapacak
Örneğin:
!#/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
echo "brain1" > /etc/hostname
kadar kolay olabilirrm -rf /
.