Quero baixar um script de: http://dl.dropbox.com/u/11210438/flockonus-stack.sh e executá-lo. Meu palpite é que, para usar o wget renomeá-lo, chmod-lo e executar.
Quais são os comandos para fazer isso no Ubuntu?
Quero baixar um script de: http://dl.dropbox.com/u/11210438/flockonus-stack.sh e executá-lo. Meu palpite é que, para usar o wget renomeá-lo, chmod-lo e executar.
Quais são os comandos para fazer isso no Ubuntu?
Respostas:
Cuidado
Antes de executar o script, você confia na pessoa que o escreveu?
Por exemplo, você esperava que o script contivesse isso?
echo "brain1" > /etc/hostname
Isso tentará alterar seu nome de host.
Para referência futura, se, após verificar o script estiver correto e não malicioso, você poderá executá-lo em uma linha como esta:
wget -O - http://dl.dropbox.com/u/11210438/flockonus-stack.sh | bash
Mas faça o download separadamente e leia-o antes de executá-lo pela primeira vez.
Observe também que os avisos interativos dentro do script baixado podem não funcionar corretamente usando esse método.
apt-get install
falas? Se apt-get
instalar quaisquer dependências extras, ele perguntará e, se não puder, sairá para ser seguro. Adicione todos os pacotes dependentes aos argumentos da linha de comando ou considere adicionar -y
, por exemplo,apt-get -y install...
Scripts não interativos
wget -O - http://website.com/my-script.sh | bash
Observe que, ao usar esse método, os scripts interativos não funcionarão.
Scripts interativos
Para que os scripts interativos funcionem, você pode usar o seguinte:
bash <(wget -qO- http://website.com/my-script.sh)
Scripts interativos que precisam ser executados como raiz
Aviso: Isso é extremamente perigoso. Não recomendado.
sudo su -c "bash <(wget -qO- http://website.com/my-script.sh)" root
Observe que você não pode usar de maneira simples, sudo bash
pois o uso <(...)
criará um arquivo virtual e seu descritor de arquivo não estará acessível a partir da instância do bash do roots. Ele deve ser executado no mesmo usuário que precisa ler o arquivo virtual; portanto, ele deve ser enviado como seu próprio comando dentro do shell do usuário raiz.
Esse script é meu, é seguro .. Adorei o one-liner, mas tem algumas linhas interativas que não foram executadas .. não sei por que?
Quando o dpkg é executado, chamado pelo apt-get, ele libera stdin. Se você estiver usando um comando como esse curl blah | bash
, estará basicamente enviando o conteúdo da página para o bash via STDIN. Se um dos seus comandos for o apt-get, então será executado, todo o resto será liberado.
O truque é usar um comando como este apt-get install --yes denyhosts </dev/null
. Isso fornece ao apt-get uma entrada diferente e simplesmente libera / dev / null em vez do restante do seu script.
Se você quiser ver um exemplo completo de instalação de algo por meio de um script remoto, consulte este script para configurar denyhosts
Para o registro, eu prefiro enrolar sobre o wget por isso, mas o wget também deve estar bem.
Todos esses exemplos estão faltando um ponto bastante importante. Se você usar o URL http://dl.dropbox.com/u/11210438/flockonus-stack.sh
, precisará auditar o script sempre que fizer o download, pois ele pode ser modificado por qualquer pessoa no caminho da rede entre você e o dropbox. Se você mudar para http s : //dl.dropbox.com/u/11210438/flockonus-stack.sh , não terá essa fonte de insegurança.
(O Dropbox tenta redirecionar o URL http para https, mas, no caso de um ataque de rede, o wget nunca consegue falar com o dropbox real e nunca vê o redirecionamento)
Tente simplesmente fazer o download conforme especificado com o wget e depois executá-lo diretamente. Você pode ser extravagante e usar variáveis para o script que deseja baixar, etc., mas isso fará o truque
Por exemplo:
!#/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
poderia ser tão facilmenterm -rf /
.